diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 3c39df7fbb..9e7a5fe6a5 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -31,10 +31,6 @@ This directory contains the GitHub Actions workflows that automate various proce **Purpose**: Builds a Docker image and uploads it as an artifact. **Trigger**: `workflow_dispatch` (manual trigger). -### [explorer_ci.yml](./explorer_ci.yml) -**Purpose**: CI for the `explorer`. Lints, tests, typechecks and builds it. -**Trigger**: `pull_request` events. - ### [profile_ci.yml](./profile_ci.yml) **Purpose**: Generates proving keys using `make keys`. **Trigger**: `workflow_dispatch`. diff --git a/.github/workflows/explorer_ci.yml b/.github/workflows/explorer_ci.yml deleted file mode 100644 index 8b6c7052ba..0000000000 --- a/.github/workflows/explorer_ci.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: explorer CI - -on: - pull_request: - types: - - opened - - synchronize - - reopened - - ready_for_review -jobs: - # JOB to run change detection - changes: - runs-on: ubuntu-latest - # Required permissions - permissions: - pull-requests: read - # Set job outputs to values from filter step - outputs: - run-ci: ${{ steps.filter.outputs.run-ci }} - steps: - # For pull requests it's not necessary to checkout the code - - uses: dorny/paths-filter@v3 - id: filter - with: - filters: | - run-ci: - - 'explorer/**' - - '.github/workflows/explorer_ci.yml' - lint-test: - needs: changes - if: needs.changes.outputs.run-ci == 'true' && (github.event.pull_request.draft == false || github.event_name == 'workflow_dispatch') - runs-on: ubuntu-latest - - name: Validate & build - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setting up Node from `.nvmrc` - uses: actions/setup-node@v4 - with: - node-version-file: "./explorer/.nvmrc" - cache: "npm" - cache-dependency-path: "./explorer/package-lock.json" - scope: "@dusk-network" - - - name: Installing dev dependencies - run: npm ci - working-directory: ./explorer - - - name: Sync SvelteKit config - run: npx svelte-kit sync - working-directory: ./explorer - - - name: Formatting check - run: npm run format - working-directory: ./explorer - - - name: Linting - run: npm run lint - working-directory: ./explorer - - - name: Type checks - run: npm run typecheck - working-directory: ./explorer - - - name: Run the test suite - run: npm test - working-directory: ./explorer - - - name: Building the app - run: npm run build - working-directory: ./explorer diff --git a/.github/workflows/rusk_ci.yml b/.github/workflows/rusk_ci.yml index 3f6ad2e1e3..a957066b34 100644 --- a/.github/workflows/rusk_ci.yml +++ b/.github/workflows/rusk_ci.yml @@ -26,7 +26,7 @@ jobs: with: filters: | run-ci: - - '!(web-wallet/**/*|explorer/**/*|w3sper.js/**/*|.github/workflows/webwallet_ci.yml|.github/workflows/explorer_ci.yml|.github/workflows/w3sperjs_ci.yml)' + - '!(web-wallet/**/*|w3sper.js/**/*|.github/workflows/webwallet_ci.yml|.github/workflows/w3sperjs_ci.yml)' analyze: needs: changes diff --git a/CLAUDE.md b/CLAUDE.md index 937edb356a..af10a17abf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -21,7 +21,7 @@ | `rusk-wallet/` | CLI wallet | | `data-drivers/` | RKYV ↔ JS bridge for contract calls | | `w3sper.js/` | Deno SDK | -| `explorer/`, `web-wallet/` | Svelte/Vite frontends | +| `web-wallet/` | Svelte/Vite frontend wallet app | ## Commands diff --git a/README.md b/README.md index 9f1218a460..5ca87787bd 100644 --- a/README.md +++ b/README.md @@ -11,9 +11,6 @@ Rusk CI   - -explorer CI web-wallet CI   @@ -70,7 +67,7 @@ For more information on **running a node for main- or testnet**, see our | 🧩 [data-drivers](/data-drivers/) | Tools to encode/decode contract arguments between RKYV and JS I/O | | 🧬 [dusk-core](/core/) | Core types used for interacting with Dusk and writing smart contracts | | 🌐 [dusk-abi](/core/src/abi.rs) | Dusk application binary interface to develop smart contracts (part of core) | -| 🧭 [explorer](/explorer/) | Dusk's blockchain explorer | +| 🧭 [explorer](https://github.com/dusk-network/explorer) | Dusk's blockchain explorer (external repo) | | 📊 [node-data](/node-data/) | Core datatypes for the blockchain node | | ⚙️ [dusk-vm](/vm/) | The virtual machine to run Dusk smart contracts | | 🪪 [rusk-profile](/rusk-profile/) | Utility to generate a genesis state based on a set profile | diff --git a/agents.md b/agents.md index d831d8ee13..2de07f79ec 100644 --- a/agents.md +++ b/agents.md @@ -67,7 +67,6 @@ When a bug is reported, start by adding a test that reproduces it (it should fai ### Frontend/SDK ```bash -cd explorer && npm ci && npm run checks cd web-wallet && npm ci && npm run checks cd w3sper.js && deno task test ``` diff --git a/explorer/.gitignore b/explorer/.gitignore deleted file mode 100644 index 06990d1b87..0000000000 --- a/explorer/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -.DS_Store -node_modules -/build -/coverage -/.svelte-kit -/package -.env -.env.* -!.env.example -vite.config.js.timestamp-* -vite.config.ts.timestamp-* diff --git a/explorer/.npmrc b/explorer/.npmrc deleted file mode 100644 index b6f27f1359..0000000000 --- a/explorer/.npmrc +++ /dev/null @@ -1 +0,0 @@ -engine-strict=true diff --git a/explorer/.nvmrc b/explorer/.nvmrc deleted file mode 100644 index e8416a151f..0000000000 --- a/explorer/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v24.13.0 diff --git a/explorer/.prettierrc.js b/explorer/.prettierrc.js deleted file mode 100644 index af8c620f9c..0000000000 --- a/explorer/.prettierrc.js +++ /dev/null @@ -1,7 +0,0 @@ -import duskJsPrettierConfig from "@dusk-network/prettier-config/js/index.js"; -import duskSveltePrettierConfig from "@dusk-network/prettier-config/svelte/index.js"; - -export default { - ...duskJsPrettierConfig, - ...duskSveltePrettierConfig, -}; diff --git a/explorer/CHANGELOG.md b/explorer/CHANGELOG.md deleted file mode 100644 index 5797eaabf3..0000000000 --- a/explorer/CHANGELOG.md +++ /dev/null @@ -1,310 +0,0 @@ -# Changelog - -All notable changes to this project will be documented in this file. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to -[Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## Unreleased - -### Added - -### Changed - -### Removed - -### Fixed - -## [1.5.0] - 2026-02-04 - -### Added - -- Add Tokens page [#3415] -- Add support for transactions' blob hashes [#3804] -- Provisioner table now supports sorting across all columns [#3924] -- Add rank column for provisioners based on active stake [#3924] -- Display of owner/consensus key separation for each staker [#3925] - -### Changed - -- Replace "TX last 100 blocks" with total historical transaction count from `/on/stats/tx_count` [#3626] -- Use supply.dusk.network for circulating supply [#3757] -- The `from` and `to` fields are now always shown in moonlight transactions regardless of the transaction's type [#3804] -- Explorer now reads circulating supply from `https://supply.dusk.network/` directly. CORS and cache headers applied via Cloudflare [#3847] -- No longer rely on Vite dev proxy for `/supply` during development [#3847] -- Hide provisioners with no active or locked stake from the provisioners list [#3930] -- Change ranking column to take the full provisioner list into account [#3931] -- Update dependencies to address potential security issues [#3985] - -### Removed - -- Deleted API URL plumbing (`makeApiUrl`, `ensureTrailingSlash`) and the `apiGet` helper. Removed `VITE_API_ENDPOINT` environment variable. [#3847] - -## [1.4.0] - 2025-05-22 - -### Added - -- Add account address copy button (Account page) [#3698] -- Add value property to Transaction Details [#3699] - -### Changed - -- Change transaction details arrangement (Transaction Details page) [#3720] -- Change transaction list to use a single GraphQL query (Account page) [#3739] - -## [1.3.3] - 2025-05-05 - -### Fixed - -- Fix transaction type badges get wrapped [#3692] -- Fix Transaction and Block entries have different row heights (Home page) [#3694] - -## [1.3.2] - 2025-04-29 - -### Fixed - -- Fix truncated provisioners addresses when copied while on mobile view [#3675] -- Fix line height and letter spacing not being applied to the account balance's container [#3676] - -## [1.3.1] - 2025-04-16 - -### Changed - -- Change address to use mono font family (Account page) [#3667] - -## [1.3.0] - 2025-04-16 - -### Added - -- Add copy buttons to appropriate fields [#3620] - -### Changed - -- Change balance appearance (Account overview page) [#3612] -- Change transaction API requests to execute in parallel [#3655] -- Change Addresses and IDs to monospaced font [#3640] -- Change data arrangement for improved information hierarchy (Provisioners page) [#3641] - -### Fixed - -- Fix overview pane spacing (Account page) [#3639] - -## [1.2.0] - 2025-04-07 - -### Added - -- Add "nonce" to transaction details page (Public transactions) [#3578] -- Add "in/out" indicator for transfer operations (Account page) [#3579] - -### Changed - -- Change provisioner rewards column to be more readable [#3581] - -### Fixed - -- Fix current balance showing "Loading..." for empty accounts [#3576] -- Fix Account page does not reload content on key change [#3591] -- Fix badge widths to maintain consistent sizing [#3483] - -## [1.1.1] - 2025-03-17 - -- Add current balance (Account page) [#3564] - -## [1.1.0] - 2025-03-17 - -### Added - -- Add Account page [#3454] - -### Changed - -- Replace legacy event system with RUES [#3425] - -### Removed - -- Remove version number from app title [#3338] - -### Fixed - -- Fix wrong owner key shown in provisioners table [#3377] -- Fix current year not displayed in footer [#3545] - -## [1.0.1] - 2025-01-07 - -### Fixed - -- Fix Owner key (Provisioners page) [#3305] - -## [1.0.0] - 2024-12-22 - -### Added - -- Add stake maturity information (Provisioners page) [#3218] -- Add "owner" field to provisioners [#3215] - -### Changed - -- Change Stake details labels [#3218] -- Change Transaction Type tooltips [#3249] - -### Fixed - -- Fix inactive stake shown as active on mobile [#3218] - -## [0.3.0] - 2024-12-03 - -### Added - -- Add error message for failed transactions [#2220] -- Add tooltips to current and pending stake to show exact amounts [#2363] -- Add `memo` and `isDeploy` fields to transactions [#2362] -- Add `txType` fields in transactions [#2347] -- Add `json` payload to block details [#2364] -- Add decode feature for the `memo` field [#2527] -- Add top node info to StatisticsPanel [#2613] -- Add Provisioners page [#2649] -- Add check for transaction existence in mempool [#2877] - -### Changed - -- Change `raw` payload to `json` in transaction details [#2364] -- Change average gas price display value to “lux” [#2416] -- Update blocks table headers – `FEE` to `GAS`, `AVG` to `AVG PRICE`, and - `TOTAL` to `USED` [#2416] -- Update block rewards tooltip information [#2166] -- Hide "Show More" button when error occurs [#2585] -- Update footer layout [#2640] -- Change WorldMap location [#2613] -- Change network info to fetch locally [#2662] -- Update Moonlight icon for visual consistency [#3038] -- Update hosted Explorer links [#3064] - -### Fixed - -- Fix improper computation of transaction fees [#2348] -- Fix shield icons for transaction types [#2389] -- Fix Gas Used meter behavior when Gas Limit is zero [#2668] -- Fix Cluster Location layout [#3034] - -## [0.2.0] - 2024-08-26 - -### Added - -- Add DEVNET option to dropdown menu in the navbar [#2159] -- Add conditional rendering for layout based on screen size [#2061] -- Add accessible name to gas-used progress bar [#2037] -- Add accessible name to navbar button on mobile [#2036] -- Add warning for stale market data [#1892] - -### Changed - -- Update separator line colors in StatisticsPanel [#2039] -- Update labels in StatisticsPanel for clarity [#2034] -- Update font-display to "swap" for custom fonts, improving performance [#2025] -- Optimize auto re-renders of relative times [#2059] - -### Fixed - -- Fix “Average Fee Paid” label [#2057] -- Fix list items alignment on mobile [#2056] - -## [0.1.0] - 2024-07-24 - -### Added - -- Add initial release for the Explorer module [#2017] - - - -[#1892]: https://github.com/dusk-network/rusk/issues/1892 -[#2017]: https://github.com/dusk-network/rusk/issues/2017 -[#2025]: https://github.com/dusk-network/rusk/issues/2025 -[#2034]: https://github.com/dusk-network/rusk/issues/2034 -[#2036]: https://github.com/dusk-network/rusk/issues/2036 -[#2037]: https://github.com/dusk-network/rusk/issues/2037 -[#2039]: https://github.com/dusk-network/rusk/issues/2039 -[#2056]: https://github.com/dusk-network/rusk/issues/2056 -[#2057]: https://github.com/dusk-network/rusk/issues/2057 -[#2059]: https://github.com/dusk-network/rusk/issues/2059 -[#2061]: https://github.com/dusk-network/rusk/issues/2061 -[#2159]: https://github.com/dusk-network/rusk/issues/2159 -[#2166]: https://github.com/dusk-network/rusk/issues/2166 -[#2220]: https://github.com/dusk-network/rusk/issues/2220 -[#2347]: https://github.com/dusk-network/rusk/issues/2347 -[#2348]: https://github.com/dusk-network/rusk/issues/2348 -[#2362]: https://github.com/dusk-network/rusk/issues/2362 -[#2363]: https://github.com/dusk-network/rusk/issues/2363 -[#2364]: https://github.com/dusk-network/rusk/issues/2364 -[#2389]: https://github.com/dusk-network/rusk/issues/2389 -[#2416]: https://github.com/dusk-network/rusk/issues/2416 -[#2527]: https://github.com/dusk-network/rusk/issues/2527 -[#2585]: https://github.com/dusk-network/rusk/issues/2585 -[#2613]: https://github.com/dusk-network/rusk/issues/2613 -[#2640]: https://github.com/dusk-network/rusk/issues/2640 -[#2649]: https://github.com/dusk-network/rusk/issues/2649 -[#2662]: https://github.com/dusk-network/rusk/issues/2662 -[#2668]: https://github.com/dusk-network/rusk/issues/2668 -[#2877]: https://github.com/dusk-network/rusk/issues/2877 -[#3034]: https://github.com/dusk-network/rusk/issues/3034 -[#3038]: https://github.com/dusk-network/rusk/issues/3038 -[#3064]: https://github.com/dusk-network/rusk/issues/3064 -[#3215]: https://github.com/dusk-network/rusk/issues/3215 -[#3218]: https://github.com/dusk-network/rusk/issues/3218 -[#3249]: https://github.com/dusk-network/rusk/issues/3249 -[#3305]: https://github.com/dusk-network/rusk/issues/3305 -[#3338]: https://github.com/dusk-network/rusk/issues/3338 -[#3377]: https://github.com/dusk-network/rusk/issues/3377 -[#3425]: https://github.com/dusk-network/rusk/issues/3425 -[#3415]: https://github.com/dusk-network/rusk/issues/3415 -[#3454]: https://github.com/dusk-network/rusk/issues/3454 -[#3483]: https://github.com/dusk-network/rusk/issues/3483 -[#3545]: https://github.com/dusk-network/rusk/issues/3454 -[#3564]: https://github.com/dusk-network/rusk/issues/3564 -[#3564]: https://github.com/dusk-network/rusk/issues/3576 -[#3578]: https://github.com/dusk-network/rusk/issues/3578 -[#3579]: https://github.com/dusk-network/rusk/issues/3579 -[#3581]: https://github.com/dusk-network/rusk/pull/3581 -[#3591]: https://github.com/dusk-network/rusk/issues/3591 -[#3612]: https://github.com/dusk-network/rusk/issues/3612 -[#3620]: https://github.com/dusk-network/rusk/issues/3620 -[#3626]: https://github.com/dusk-network/rusk/issues/3626 -[#3639]: https://github.com/dusk-network/rusk/issues/3639 -[#3640]: https://github.com/dusk-network/rusk/issues/3640 -[#3641]: https://github.com/dusk-network/rusk/issues/3641 -[#3655]: https://github.com/dusk-network/rusk/issues/3655 -[#3667]: https://github.com/dusk-network/rusk/issues/3667 -[#3675]: https://github.com/dusk-network/rusk/issues/3675 -[#3676]: https://github.com/dusk-network/rusk/issues/3676 -[#3692]: https://github.com/dusk-network/rusk/issues/3692 -[#3694]: https://github.com/dusk-network/rusk/issues/3694 -[#3698]: https://github.com/dusk-network/rusk/issues/3698 -[#3699]: https://github.com/dusk-network/rusk/issues/3699 -[#3720]: https://github.com/dusk-network/rusk/issues/3720 -[#3739]: https://github.com/dusk-network/rusk/issues/3739 -[#3757]: https://github.com/dusk-network/rusk/issues/3757 -[#3804]: https://github.com/dusk-network/rusk/issues/3804 -[#3847]: https://github.com/dusk-network/rusk/issues/3847 -[#3924]: https://github.com/dusk-network/rusk/issues/3924 -[#3925]: https://github.com/dusk-network/rusk/issues/3925 -[#3930]: https://github.com/dusk-network/rusk/issues/3930 -[#3931]: https://github.com/dusk-network/rusk/issues/3931 -[#3985]: https://github.com/dusk-network/rusk/issues/3985 - - - -[Unreleased]: https://github.com/dusk-network/rusk/tree/master/explorer -[1.5.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.5.0 -[1.4.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.4.0 -[1.3.3]: https://github.com/dusk-network/rusk/tree/explorer-v1.3.3 -[1.3.2]: https://github.com/dusk-network/rusk/tree/explorer-v1.3.2 -[1.3.1]: https://github.com/dusk-network/rusk/tree/explorer-v1.3.1 -[1.3.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.3.0 -[1.2.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.2.0 -[1.1.1]: https://github.com/dusk-network/rusk/tree/explorer-v1.1.1 -[1.1.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.1.0 -[1.0.1]: https://github.com/dusk-network/rusk/tree/explorer-v1.0.1 -[1.0.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.0.0 -[0.3.0]: https://github.com/dusk-network/rusk/tree/explorer-0.3.0 -[0.2.0]: https://github.com/dusk-network/rusk/tree/explorer-0.2.0 -[0.1.0]: https://github.com/dusk-network/rusk/tree/explorer-0.1.0 diff --git a/explorer/LICENSE b/explorer/LICENSE deleted file mode 100644 index a612ad9813..0000000000 --- a/explorer/LICENSE +++ /dev/null @@ -1,373 +0,0 @@ -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. diff --git a/explorer/Makefile b/explorer/Makefile deleted file mode 100644 index 93b6999789..0000000000 --- a/explorer/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -all: ## Build the explorer - npm install - npm run build - -help: ## Display this help screen - @grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}' - -.PHONY: all help diff --git a/explorer/README.md b/explorer/README.md deleted file mode 100644 index c3e2332f81..0000000000 --- a/explorer/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# Explorer - -Explorer website. - -## TOC - -- [Explorer](#explorer) - - [TOC](#toc) - - [Build system and dev environment](#build-system-and-dev-environment) - - [Environment variables](#environment-variables) - - [NPM scripts](#npm-scripts) - -## Build system and dev environment - -The build system assumes that you have at least Node.js v24.x installed. The LTS version is 24.13.0 at the time of writing. - -All terminal commands assume that you are positioned in root folder of the repository. -Run `npm install` from the root folder to get the necessary dependencies. - -## Environment variables - -The application defines these variables by reading a local `.env` - -``` -# *_PATH variables can be empty string, must start with a slash otherwise, must not end with a slash - -VITE_BASE_PATH="" # Optional, set to '/explorer' when deploying to an 'apps.*' subdomain -VITE_BLOCKS_LIST_ENTRIES=100 -VITE_CHAIN_INFO_ENTRIES=15 -VITE_MARKET_DATA_REFETCH_INTERVAL=120000 -VITE_NODE_URL="" # Optional, set to (e.g. 'https://nodes.dusk.network' to) override default -VITE_PROVISIONERS_REFETCH_INTERVAL=30000 -VITE_REFETCH_INTERVAL=10000 -VITE_RUSK_PATH="" # Optional, set to '/rusk' for dev mode -VITE_STATS_REFETCH_INTERVAL=1000 -VITE_TRANSACTIONS_LIST_ENTRIES=100 -VITE_FEATURE_TOKENS=true -VITE_FEATURE_BLOB_HASHES=true # requires node version >= 1.3.1-alpha.1 -``` - -## Environment variables and dev mode - -The application defaults to setting the node URL to `/`. In dev mode, requests made on `/rusk` are passed through a proxy to `localhost:8080`. When the app is running in dev mode, set `VITE_RUSK_PATH` to "/rusk". - -The application will determine which network it is connected to by the subdomain it is hosted under, to override this and connect to any node set `VITE_NODE_URL`. Note that only `https://` protocol URLs are valid. - -## NPM scripts - -- `npm run build` generates the production build -- `npm run checks` runs all checks (lint, typecheck and test) -- `npm run dev` generates the development build and starts the dev server -- `npm run dev:host` generates the development build, starts the dev server and exposes it to the local network -- `npm run lint`: performs the linting checks -- `npm run lint:fix`: runs ESLint with the `--fix` flag to fix formatting errors -- `npm run preview` previews the production build -- `npm test` runs the test suite -- `npm run test:coverage` runs the test suite and generates the code coverage report in the `coverage` folder -- `npm run test:watch` runs the test suite in watch mode -- `npm run typecheck` runs the type checker -- `npm run typecheck:watch` runs the type checker in watch mode diff --git a/explorer/RELEASE.md b/explorer/RELEASE.md deleted file mode 100644 index 4517c46265..0000000000 --- a/explorer/RELEASE.md +++ /dev/null @@ -1,194 +0,0 @@ -# Web Apps Release Instructions - -This document outlines the standard process for releasing updates to web applications following semantic versioning principles. - -## Example: Explorer v1.1.0 Release - -### 1. Create a Release Issue - -- Create a new issue in the project repository -- Title: `Release Explorer v1.1.0` or `explorer: Release v1.1.0`, if using prefix to the issue title -- Add appropriate labels (e.g. module: `explorer`, type: `task`) - -### 2. Create a Release Branch - -- Create a branch from the latest `main` -- Name the branch using the issue number (e.g., `feature-ABC-123`) -- **Note:** Do not use version numbers for branch names to avoid conflicts with tags - -```bash -git checkout main -git pull -git checkout -b feature-ABC-123 -``` - -### 3. Update Version Number - -- Use npm version commands to bump version according to semantic versioning: - - `npm version patch` (for bug fixes and minor changes) - - `npm version minor` (for new features, backward compatible) - - `npm version major` (for breaking changes) -- For this example: `npm version minor` - -```bash -npm version minor -``` - -### 4. Update the CHANGELOG.md - -- Add a new section for the version being released -- Copy relevant changes from "Unreleased" section to the new version section -- Keep the "Unreleased" section with any features that remain hidden to users -- Ensure the format follows the project's changelog conventions -- Add the version to the bottom of the changelog under "Versions" - -Example CHANGELOG.md format: - -```markdown -# Changelog - -All notable changes to Explorer will be documented in this file. - -## [Unreleased] - -- New analytics dashboard layout (in progress) -- Experimental dark mode theme - -## [1.1.0] - 2025-04-22 - -### Added - -- Multi-account support -- Export functionality for transaction history -- Enhanced filtering options - -### Changed - -- Improved loading performance by 35% -- Updated UI components for better mobile experience - -### Fixed - -- Transaction history pagination issue -- Search functionality in asset explorer - -## [1.0.1] - 2025-03-15 - -... - - - -[1.1.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.1.0 -[1.0.0]: https://github.com/dusk-network/rusk/tree/explorer-v1.0.0 -``` - -### 5. Create and Review Pull Request - -- Commit and push the changes -- Open a PR targeting `main` -- Copy the changelog section for the new version into the PR description -- Request code review from team members - -```bash -git add CHANGELOG.md package.json package-lock.json -git commit -m "explorer: Release v1.1.0" -git push origin feature-ABC-123 -``` - -### 6. Create Annotated Tag - -**Option A: Tag from branch (after approval)** - -```bash -git tag -a explorer-v1.1.0 -m "Explorer: Release v1.1.0" -``` - -**Option B: Merge to main then tag (recommended)** - -```bash -git checkout main -git pull -git tag -a explorer-v1.1.0 -m "Explorer: Release v1.1.0" -``` - -**Important note:** Ensure the tag name (`explorer-v1.1.0`) matches exactly with the entry added to the CHANGELOG.md in step 4. - -### 7. Push the Tag - -```bash -git push origin explorer-v1.1.0 -``` - -### 8. Verify Staging Environments - -- Wait for staging environments to rebuild automatically -- Verify the application works as expected on all staging environments -- Check that the version number displayed matches the released version -- Test all features mentioned in the changelog - -### 9. Progressive Deployment on Production - -Deploy the new version progressively through each environment: - -1. **Devnet** - - Deploy to development network - - Verify functionality - - Address any issues before proceeding - -2. **Testnet** - - Deploy to test network after devnet validation - - Run comprehensive tests - - Verify integrations with other systems - -3. **Mainnet** - - Deploy to production after successful testnet validation - - Monitor deployment closely - -### 10. Troubleshooting Deployment - -If errors occur during deployment: - -- Try rebuilding with the "clear cache" option enabled -- Check build logs for specific errors -- Verify environment variables are correctly set -- Confirm that all dependencies are properly resolved - -### 11. Final Validation - -- Confirm the application works correctly across all production environments -- Verify the product version displayed in the UI matches the released version -- Test all key user flows and features on different devices and browsers -- Monitor error logs and performance metrics - -### 12. Announce the Release - -- Notify marketing team to prepare community announcement -- Directly inform stakeholders whose requested features or fixes are included -- Provide specific details to team members about changes that affect their work -- Consider posting in relevant Discord channels, email lists, or other communication platforms -- For major releases, coordinate with marketing on blog posts or social media announcements - -## Rollback Procedure (If Needed) - -If critical issues are discovered after deployment: - -1. Identify the last stable tag/version -2. Deploy the previous stable version to affected environments -3. Create a hotfix branch from the stable tag -4. Fix the issue and follow an expedited version of the release process -5. Communicate transparently about the issue and resolution - -## Release Checklist - -- [ ] Create issue for release -- [ ] Create feature branch with issue number -- [ ] Update version with npm version command -- [ ] Update CHANGELOG.md -- [ ] Open and get approval on PR -- [ ] Create and push annotated tag -- [ ] Verify staging deployment -- [ ] Deploy to devnet and verify -- [ ] Deploy to testnet and verify -- [ ] Deploy to mainnet and verify -- [ ] Final validation across environments -- [ ] Announce release to stakeholders diff --git a/explorer/eslint.config.js b/explorer/eslint.config.js deleted file mode 100644 index 73b3da497c..0000000000 --- a/explorer/eslint.config.js +++ /dev/null @@ -1,67 +0,0 @@ -import { defineConfig, globalIgnores } from "@eslint/config-helpers"; -import globals from "globals"; -import jsEsLintConfig from "@dusk-network/eslint-config"; -import svelteEsLintConfig from "@dusk-network/eslint-config/svelte"; -import vitestEsLintConfig from "@dusk-network/eslint-config/vitest"; - -import svelteConfig from "./svelte.config.js"; - -/** @type {import("eslint").Linter.Config[]} */ -export default defineConfig([ - { - files: ["**/*.{js,mjs,cjs,svelte}"], - languageOptions: { - ecmaVersion: "latest", - globals: { - ...globals.browser, - ...globals.node, - }, - sourceType: "module", - }, - settings: { - "import/resolver": { - node: {}, - typescript: { - alwaysTryTypes: true, - project: "./jsconfig.json", - }, - }, - }, - }, - { - extends: [jsEsLintConfig], - files: ["src/**/*.{js,mjs,cjs}"], - }, - { - extends: [svelteEsLintConfig], - files: ["**/*.svelte"], - languageOptions: { - parserOptions: { - svelteConfig, - }, - }, - rules: { - /** - * This rule was added in `eslint-plugin-svelte` v3.12.0. - * We disable it temporarily for links, as we have our own - * path resolution in place. - * - * @see https://sveltejs.github.io/eslint-plugin-svelte/rules/no-navigation-without-resolve/ - */ - "svelte/no-navigation-without-resolve": [ - "error", - { - ignoreGoto: false, - ignoreLinks: true, - ignorePushState: false, - ignoreReplaceState: false, - }, - ], - }, - }, - { - extends: [vitestEsLintConfig], - files: ["*.js", "**/*.spec.js", "src/lib/dusk/mocks/**/*.js"], - }, - globalIgnores([".svelte-kit/", "build/", "coverage/"]), -]); diff --git a/explorer/jsconfig.json b/explorer/jsconfig.json deleted file mode 100644 index d264c7ac26..0000000000 --- a/explorer/jsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "baseUrl": ".", - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "noImplicitAny": true, - "paths": { - "$app": ["./node_modules/@sveltejs/kit/src/runtime/app"], - "$app/*": ["./node_modules/@sveltejs/kit/src/runtime/app/*"], - "$lib": ["./src/lib"], - "$lib/*": ["./src/lib/*"], - "svelte/motion": ["node_modules/svelte/src/runtime/motion/index.js"], - "svelte/store": ["./node_modules/svelte/src/runtime/store/index.js"], - "svelte/transition": [ - "node_modules/svelte/src/runtime/transition/index.js" - ] - }, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "types": [ - "./node_modules/@testing-library/jest-dom/types/vitest.d.ts", - "lamb-types", - "@types/d3-geo" - ] - } -} diff --git a/explorer/package-lock.json b/explorer/package-lock.json deleted file mode 100644 index b4cb5f7bdc..0000000000 --- a/explorer/package-lock.json +++ /dev/null @@ -1,9139 +0,0 @@ -{ - "name": "explorer", - "version": "1.5.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "explorer", - "version": "1.5.0", - "license": "MPL-2.0", - "dependencies": { - "@floating-ui/dom": "1.7.5", - "@mdi/js": "7.4.47", - "d3-geo": "3.1.1", - "d3-scale": "4.0.2", - "lamb": "0.61.1" - }, - "devDependencies": { - "@dusk-network/eslint-config": "4.0.1", - "@dusk-network/prettier-config": "1.1.0", - "@eslint/js": "9.39.2", - "@juggle/resize-observer": "3.4.0", - "@sveltejs/adapter-static": "3.0.10", - "@sveltejs/kit": "2.50.2", - "@sveltejs/vite-plugin-svelte": "3.1.2", - "@testing-library/jest-dom": "6.9.1", - "@testing-library/svelte": "5.3.1", - "@types/d3-geo": "3.1.0", - "@types/node": "25.2.0", - "@vitest/browser": "4.0.18", - "@vitest/coverage-istanbul": "4.0.18", - "autoprefixer": "10.4.24", - "eslint": "9.39.2", - "eslint-config-prettier": "10.1.8", - "eslint-import-resolver-typescript": "4.4.4", - "eslint-plugin-svelte": "3.14.0", - "globals": "17.3.0", - "jsdom": "28.0.0", - "jsdom-worker": "0.3.0", - "lamb-types": "0.61.16", - "postcss-nested": "7.0.2", - "prettier": "3.8.1", - "prettier-plugin-svelte": "3.4.1", - "svelte": "4.2.20", - "svelte-check": "4.3.6", - "svelte-preprocess": "6.0.3", - "typescript": "5.9.3", - "vite": "5.4.21", - "vite-tsconfig-paths": "6.0.5", - "vitest": "4.0.18" - }, - "engines": { - "node": "^24.0.0" - } - }, - "node_modules/@acemir/cssom": { - "version": "0.9.31", - "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", - "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@adobe/css-tools": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", - "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@asamuzakjp/css-color": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.1.tgz", - "integrity": "sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "lru-cache": "^11.2.4" - } - }, - "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@asamuzakjp/dom-selector": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.7.tgz", - "integrity": "sha512-8CO/UQ4tzDd7ula+/CVimJIVWez99UJlbMyIgk8xOnhAVPKLnBZmUFYVgugS441v2ZqUq5EnSh6B0Ua0liSFAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/nwsapi": "^2.3.9", - "bidi-js": "^1.0.3", - "css-tree": "^3.1.0", - "is-potential-custom-element-name": "^1.0.1", - "lru-cache": "^11.2.5" - } - }, - "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@asamuzakjp/nwsapi": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", - "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", - "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz", - "integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz", - "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", - "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" - } - }, - "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz", - "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT-0" - }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@dusk-network/eslint-config": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@dusk-network/eslint-config/-/eslint-config-4.0.1.tgz", - "integrity": "sha512-E9q4sKPT/s9o8kgSySXLUB4jcRy+a0N/vn5psZ49iU4tHI93SXZkqzfF22CtVR+9nW3PNEqkN2kJwPVdjEK0sg==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "eslint-plugin-import": "2.31.0" - }, - "engines": { - "node": ">=20.18.0" - }, - "optionalDependencies": { - "@vitest/eslint-plugin": ">=1.1.43", - "eslint-plugin-svelte": ">=3.5.1" - }, - "peerDependencies": { - "@eslint/js": ">=9.26.0", - "eslint": ">=9.26.0", - "eslint-config-prettier": ">=10.1.2" - } - }, - "node_modules/@dusk-network/prettier-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@dusk-network/prettier-config/-/prettier-config-1.1.0.tgz", - "integrity": "sha512-Zr618i5OUAOCHFMKwVzYT0MfI7nI1af0Zd4XFc0dOkSfKaJLQM/YJrTY5HRiBvymtf7TsQD8TPx+R25RAyTXUA==", - "dev": true, - "license": "MPL-2.0", - "engines": { - "node": ">=16.0.0" - }, - "optionalDependencies": { - "prettier-plugin-svelte": ">=3.2.1" - } - }, - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz", - "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz", - "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz", - "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", - "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@exodus/bytes": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.11.0.tgz", - "integrity": "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "@noble/hashes": "^1.8.0 || ^2.0.0" - }, - "peerDependenciesMeta": { - "@noble/hashes": { - "optional": true - } - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz", - "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz", - "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.4", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@juggle/resize-observer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@mdi/js": { - "version": "7.4.47", - "resolved": "https://registry.npmjs.org/@mdi/js/-/js-7.4.47.tgz", - "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", - "license": "Apache-2.0" - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true, - "license": "MIT" - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.8.tgz", - "integrity": "sha512-esgN+54+q0NjB0Y/4BomT9samII7jGwNy/2a3wNZbT2A2RpmXsXwUt24LvLhx6jUq2gVk4cWEvcRO6MFQbOfNA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8.9.0" - } - }, - "node_modules/@sveltejs/adapter-static": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", - "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@sveltejs/kit": "^2.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "2.50.2", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.50.2.tgz", - "integrity": "sha512-875hTUkEbz+MyJIxWbQjfMaekqdmEKUUfR7JyKcpfMRZqcGyrO9Gd+iS1D/Dx8LpE5FEtutWGOtlAh4ReSAiOA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@sveltejs/acorn-typescript": "^1.0.5", - "@types/cookie": "^0.6.0", - "acorn": "^8.14.1", - "cookie": "^0.6.0", - "devalue": "^5.6.2", - "esm-env": "^1.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "mrmime": "^2.0.0", - "sade": "^1.8.1", - "set-cookie-parser": "^3.0.0", - "sirv": "^3.0.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=18.13" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": "^5.3.3", - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", - "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", - "debug": "^4.3.4", - "deepmerge": "^4.3.1", - "kleur": "^4.1.5", - "magic-string": "^0.30.10", - "svelte-hmr": "^0.16.0", - "vitefu": "^0.2.5" - }, - "engines": { - "node": "^18.0.0 || >=20" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.0" - } - }, - "node_modules/@sveltejs/vite-plugin-svelte-inspector": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", - "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.0.0 || >=20" - }, - "peerDependencies": { - "@sveltejs/vite-plugin-svelte": "^3.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "vite": "^5.0.0" - } - }, - "node_modules/@testing-library/dom": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", - "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "picocolors": "1.1.1", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/dom/node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/jest-dom": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", - "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@adobe/css-tools": "^4.4.0", - "aria-query": "^5.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.6.3", - "picocolors": "^1.1.1", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/@testing-library/svelte": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@testing-library/svelte/-/svelte-5.3.1.tgz", - "integrity": "sha512-8Ez7ZOqW5geRf9PF5rkuopODe5RGy3I9XR+kc7zHh26gBiktLaxTfKmhlGaSHYUOTQE7wFsLMN9xCJVCszw47w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@testing-library/dom": "9.x.x || 10.x.x", - "@testing-library/svelte-core": "1.0.0" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "svelte": "^3 || ^4 || ^5 || ^5.0.0-next.0", - "vite": "*", - "vitest": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@testing-library/svelte-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/svelte-core/-/svelte-core-1.0.0.tgz", - "integrity": "sha512-VkUePoLV6oOYwSUvX6ShA8KLnJqZiYMIbP2JW2t0GLWLkJxKGvuH5qrrZBV/X7cXFnLGuFQEC7RheYiZOW68KQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "svelte": "^3 || ^4 || ^5 || ^5.0.0-next.0" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", - "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", - "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.54.0.tgz", - "integrity": "sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.54.0", - "@typescript-eslint/types": "^8.54.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.54.0.tgz", - "integrity": "sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.54.0.tgz", - "integrity": "sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.54.0.tgz", - "integrity": "sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.54.0.tgz", - "integrity": "sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typescript-eslint/project-service": "8.54.0", - "@typescript-eslint/tsconfig-utils": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/visitor-keys": "8.54.0", - "debug": "^4.4.3", - "minimatch": "^9.0.5", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.54.0.tgz", - "integrity": "sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.54.0", - "@typescript-eslint/types": "8.54.0", - "@typescript-eslint/typescript-estree": "8.54.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.54.0.tgz", - "integrity": "sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typescript-eslint/types": "8.54.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vitest/browser": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.0.18.tgz", - "integrity": "sha512-gVQqh7paBz3gC+ZdcCmNSWJMk70IUjDeVqi+5m5vYpEHsIwRgw3Y545jljtajhkekIpIp5Gg8oK7bctgY0E2Ng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/mocker": "4.0.18", - "@vitest/utils": "4.0.18", - "magic-string": "^0.30.21", - "pixelmatch": "7.1.0", - "pngjs": "^7.0.0", - "sirv": "^3.0.2", - "tinyrainbow": "^3.0.3", - "ws": "^8.18.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "4.0.18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/browser/node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.0.18", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/browser/node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, - "node_modules/@vitest/browser/node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/@vitest/browser/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/@vitest/coverage-istanbul": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-4.0.18.tgz", - "integrity": "sha512-0OhjP30owEDihYTZGWuq20rNtV1RjjJs1Mv4MaZIKcFBmiLUXX7HJLX4fU7wE+Mrc3lQxI2HKq6WrSXi5FGuCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@istanbuljs/schema": "^0.1.3", - "@jridgewell/gen-mapping": "^0.3.13", - "@jridgewell/trace-mapping": "0.3.31", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-instrument": "^6.0.3", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.2.0", - "magicast": "^0.5.1", - "obug": "^2.1.1", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": "4.0.18" - } - }, - "node_modules/@vitest/eslint-plugin": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.6.tgz", - "integrity": "sha512-bwgQxQWRtnTVzsUHK824tBmHzjV0iTx3tZaiQIYDjX3SA7TsQS8CuDVqxXrRY3FaOUMgbGavesCxI9MOfFLm7Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@typescript-eslint/scope-manager": "^8.51.0", - "@typescript-eslint/utils": "^8.51.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": ">=8.57.0", - "typescript": ">=5.0.0", - "vitest": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz", - "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@types/chai": "^5.2.2", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "chai": "^6.2.1", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/pretty-format": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz", - "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz", - "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "4.0.18", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz", - "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.0.18", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/spy": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz", - "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz", - "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.0.18", - "tinyrainbow": "^3.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.24", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.24.tgz", - "integrity": "sha512-uHZg7N9ULTVbutaIsDRoUkoS8/h3bdsmVJYZ5l3wv8Cp/6UIIoRDm90hZ+BwxUj/hGBEzLxdHNSKuFpn8WOyZw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001766", - "fraction.js": "^5.3.4", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", - "integrity": "sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "require-from-string": "^2.0.2" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001767", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001767.tgz", - "integrity": "sha512-34+zUAMhSH+r+9eKmYG+k2Rpt8XttfE4yXAjoZvkAPs15xcYQhyBYdalJ65BzivAvGRMViEjy6oKr/S91loekQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", - "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/code-red": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", - "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15", - "@types/estree": "^1.0.1", - "acorn": "^8.10.0", - "estree-walker": "^3.0.3", - "periscopic": "^3.1.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cssstyle": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz", - "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^4.1.1", - "@csstools/css-syntax-patches-for-csstree": "^1.0.21", - "css-tree": "^3.1.0", - "lru-cache": "^11.2.4" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cssstyle/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", - "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-urls": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", - "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^16.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", - "dev": true, - "license": "MIT" - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dom-accessibility-api": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", - "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", - "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", - "dev": true, - "license": "ISC" - }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-context": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.9.tgz", - "integrity": "sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-tsconfig": "^4.10.1", - "stable-hash-x": "^0.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-context" - }, - "peerDependencies": { - "unrs-resolver": "^1.0.0" - }, - "peerDependenciesMeta": { - "unrs-resolver": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", - "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.4.1", - "eslint-import-context": "^0.1.8", - "get-tsconfig": "^4.10.1", - "is-bun-module": "^2.0.0", - "stable-hash-x": "^0.2.0", - "tinyglobby": "^0.2.14", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^16.17.0 || >=18.6.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-svelte": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-svelte/-/eslint-plugin-svelte-3.14.0.tgz", - "integrity": "sha512-Isw0GvaMm0yHxAj71edAdGFh28ufYs+6rk2KlbbZphnqZAzrH3Se3t12IFh2H9+1F/jlDhBBL4oiOJmLqmYX0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.6.1", - "@jridgewell/sourcemap-codec": "^1.5.0", - "esutils": "^2.0.3", - "globals": "^16.0.0", - "known-css-properties": "^0.37.0", - "postcss": "^8.4.49", - "postcss-load-config": "^3.1.4", - "postcss-safe-parser": "^7.0.0", - "semver": "^7.6.3", - "svelte-eslint-parser": "^1.4.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": "^8.57.1 || ^9.0.0", - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-svelte/node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/esm-env": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.1.tgz", - "integrity": "sha512-EoY1N2xCn44xU6750Sx7OjOIT59FkmstNc3X6y5xpz7D5cBtZRe/3pSlTkDJgqsOk3WwZPkWfonhhUJfttQo3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", - "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", - "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@exodus/bytes": "^1.6.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-reference": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.6" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "28.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.0.0.tgz", - "integrity": "sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@acemir/cssom": "^0.9.31", - "@asamuzakjp/dom-selector": "^6.7.6", - "@exodus/bytes": "^1.11.0", - "cssstyle": "^5.3.7", - "data-urls": "^7.0.0", - "decimal.js": "^10.6.0", - "html-encoding-sniffer": "^6.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "parse5": "^8.0.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^6.0.0", - "undici": "^7.20.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^8.0.1", - "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^16.0.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom-worker": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/jsdom-worker/-/jsdom-worker-0.3.0.tgz", - "integrity": "sha512-nlPmN0i93+e6vxzov8xqLMR+MBs/TAYeSviehivzqovHH0AgooVx9pQ/otrygASppPvdR+V9Jqx5SMe8+FcADg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mitt": "^3.0.0", - "uuid-v4": "^0.1.0" - }, - "peerDependencies": { - "node-fetch": "*" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/known-css-properties": { - "version": "0.37.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", - "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lamb": { - "version": "0.61.1", - "resolved": "https://registry.npmjs.org/lamb/-/lamb-0.61.1.tgz", - "integrity": "sha512-KnJe/9ezIxQjeK5idtlffn9PlA2y4BNW0FslBZK20+EuMmvePfNL4qO2ZGdP187Vd3yWgrEnrBsfMal/Ggzowg==", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/lamb-types": { - "version": "0.61.16", - "resolved": "https://registry.npmjs.org/lamb-types/-/lamb-types-0.61.16.tgz", - "integrity": "sha512-cuaOYlTiZ+3oIpKuRlHTR1PvPUQ8sM3sh9Su9eytFt/CuX3QvFsnCMUvheWIVxQAdUtH8R+WwHyw9T0zZiflpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", - "dev": true, - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/magicast": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.1.tgz", - "integrity": "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.5", - "@babel/types": "^7.28.5", - "source-map-js": "^1.2.1" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mitt": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", - "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true, - "license": "MIT" - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ], - "license": "MIT" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", - "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pixelmatch": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-7.1.0.tgz", - "integrity": "sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==", - "dev": true, - "license": "ISC", - "dependencies": { - "pngjs": "^7.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pngjs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", - "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.19.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" - }, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/postcss-nested": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-7.0.2.tgz", - "integrity": "sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.14" - } - }, - "node_modules/postcss-safe-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", - "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=18.0" - }, - "peerDependencies": { - "postcss": "^8.4.31" - } - }, - "node_modules/postcss-scss": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", - "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss-scss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "postcss": "^8.4.29" - } - }, - "node_modules/postcss-selector-parser": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", - "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-plugin-svelte": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.4.1.tgz", - "integrity": "sha512-xL49LCloMoZRvSwa6IEdN2GV6cq2IqpYGstYtMT+5wmml1/dClEoI0MZR78MiVPpu6BdQFfN0/y73yO6+br5Pg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "prettier": "^3.0.0", - "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", - "fsevents": "~2.3.2" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-cookie-parser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.0.1.tgz", - "integrity": "sha512-n7Z7dXZhJbwuAHhNzkTti6Aw9QDDjZtm3JTpTGATIdNzdQz5GuFs22w90BcvF4INfnrL5xrX3oGsuqO5Dx3A1Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable-hash-x": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", - "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/svelte": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.20.tgz", - "integrity": "sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@jridgewell/sourcemap-codec": "^1.4.15", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/estree": "^1.0.1", - "acorn": "^8.9.0", - "aria-query": "^5.3.0", - "axobject-query": "^4.0.0", - "code-red": "^1.0.3", - "css-tree": "^2.3.1", - "estree-walker": "^3.0.3", - "is-reference": "^3.0.1", - "locate-character": "^3.0.0", - "magic-string": "^0.30.4", - "periscopic": "^3.1.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/svelte-check": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.3.6.tgz", - "integrity": "sha512-uBkz96ElE3G4pt9E1Tw0xvBfIUQkeH794kDQZdAUk795UVMr+NJZpuFSS62vcmO/DuSalK83LyOwhgWq8YGU1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "chokidar": "^4.0.1", - "fdir": "^6.2.0", - "picocolors": "^1.0.0", - "sade": "^1.7.4" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": ">=5.0.0" - } - }, - "node_modules/svelte-eslint-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/svelte-eslint-parser/-/svelte-eslint-parser-1.4.1.tgz", - "integrity": "sha512-1eqkfQ93goAhjAXxZiu1SaKI9+0/sxp4JIWQwUpsz7ybehRE5L8dNuz7Iry7K22R47p5/+s9EM+38nHV2OlgXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-scope": "^8.2.0", - "eslint-visitor-keys": "^4.0.0", - "espree": "^10.0.0", - "postcss": "^8.4.49", - "postcss-scss": "^4.0.9", - "postcss-selector-parser": "^7.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0", - "pnpm": "10.24.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "svelte": "^3.37.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "svelte": { - "optional": true - } - } - }, - "node_modules/svelte-eslint-parser/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/svelte-hmr": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", - "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^12.20 || ^14.13.1 || >= 16" - }, - "peerDependencies": { - "svelte": "^3.19.0 || ^4.0.0" - } - }, - "node_modules/svelte-preprocess": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.3.tgz", - "integrity": "sha512-PLG2k05qHdhmRG7zR/dyo5qKvakhm8IJ+hD2eFRQmMLHp7X3eJnjeupUtvuRpbNiF31RjVw45W+abDwHEmP5OA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.10.2", - "coffeescript": "^2.5.1", - "less": "^3.11.3 || ^4.0.0", - "postcss": "^7 || ^8", - "postcss-load-config": ">=3", - "pug": "^3.0.0", - "sass": "^1.26.8", - "stylus": ">=0.55", - "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0", - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "coffeescript": { - "optional": true - }, - "less": { - "optional": true - }, - "postcss": { - "optional": true - }, - "postcss-load-config": { - "optional": true - }, - "pug": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/svelte/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/svelte/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyrainbow": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", - "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tldts": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.21.tgz", - "integrity": "sha512-Plu6V8fF/XU6d2k8jPtlQf5F4Xx2hAin4r2C2ca7wR8NK5MbRTo9huLUWRe28f3Uk8bYZfg74tit/dSjc18xnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tldts-core": "^7.0.21" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.21.tgz", - "integrity": "sha512-oVOMdHvgjqyzUZH1rOESgJP1uNe2bVrfK0jUHHmiM2rpEiRbf3j4BrsIc6JigJRbHGanQwuZv/R+LTcHsw+bLA==", - "dev": true, - "license": "MIT" - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", - "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^7.0.5" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/tr46": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", - "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/ts-api-utils": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", - "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfck": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", - "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", - "dev": true, - "license": "MIT", - "bin": { - "tsconfck": "bin/tsconfck.js" - }, - "engines": { - "node": "^18 || >=20" - }, - "peerDependencies": { - "typescript": "^5.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true, - "license": "0BSD", - "optional": true - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", - "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "peer": true, - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true, - "license": "MIT" - }, - "node_modules/uuid-v4": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/uuid-v4/-/uuid-v4-0.1.0.tgz", - "integrity": "sha512-m11RYDtowtAIihBXMoGajOEKpAXrKbpKlpmxqyztMYQNGSY5nZAZ/oYch/w2HNS1RMA4WLGcZvuD8/wFMuCEzA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-tsconfig-paths": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.5.tgz", - "integrity": "sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^3.0.3" - }, - "peerDependencies": { - "vite": "*" - } - }, - "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz", - "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vitest/expect": "4.0.18", - "@vitest/mocker": "4.0.18", - "@vitest/pretty-format": "4.0.18", - "@vitest/runner": "4.0.18", - "@vitest/snapshot": "4.0.18", - "@vitest/spy": "4.0.18", - "@vitest/utils": "4.0.18", - "es-module-lexer": "^1.7.0", - "expect-type": "^1.2.2", - "magic-string": "^0.30.21", - "obug": "^2.1.1", - "pathe": "^2.0.3", - "picomatch": "^4.0.3", - "std-env": "^3.10.0", - "tinybench": "^2.9.0", - "tinyexec": "^1.0.2", - "tinyglobby": "^0.2.15", - "tinyrainbow": "^3.0.3", - "vite": "^6.0.0 || ^7.0.0", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@opentelemetry/api": "^1.9.0", - "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", - "@vitest/browser-playwright": "4.0.18", - "@vitest/browser-preview": "4.0.18", - "@vitest/browser-webdriverio": "4.0.18", - "@vitest/ui": "4.0.18", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@opentelemetry/api": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser-playwright": { - "optional": true - }, - "@vitest/browser-preview": { - "optional": true - }, - "@vitest/browser-webdriverio": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz", - "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz", - "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz", - "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/android-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz", - "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz", - "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/darwin-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz", - "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz", - "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz", - "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz", - "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz", - "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz", - "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-loong64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz", - "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz", - "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz", - "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz", - "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-s390x": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz", - "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/linux-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz", - "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz", - "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz", - "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/sunos-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz", - "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-arm64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz", - "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-ia32": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz", - "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@esbuild/win32-x64": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz", - "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/vitest/node_modules/@vitest/mocker": { - "version": "4.0.18", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz", - "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "4.0.18", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.21" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/esbuild": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz", - "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.2", - "@esbuild/android-arm": "0.27.2", - "@esbuild/android-arm64": "0.27.2", - "@esbuild/android-x64": "0.27.2", - "@esbuild/darwin-arm64": "0.27.2", - "@esbuild/darwin-x64": "0.27.2", - "@esbuild/freebsd-arm64": "0.27.2", - "@esbuild/freebsd-x64": "0.27.2", - "@esbuild/linux-arm": "0.27.2", - "@esbuild/linux-arm64": "0.27.2", - "@esbuild/linux-ia32": "0.27.2", - "@esbuild/linux-loong64": "0.27.2", - "@esbuild/linux-mips64el": "0.27.2", - "@esbuild/linux-ppc64": "0.27.2", - "@esbuild/linux-riscv64": "0.27.2", - "@esbuild/linux-s390x": "0.27.2", - "@esbuild/linux-x64": "0.27.2", - "@esbuild/netbsd-arm64": "0.27.2", - "@esbuild/netbsd-x64": "0.27.2", - "@esbuild/openbsd-arm64": "0.27.2", - "@esbuild/openbsd-x64": "0.27.2", - "@esbuild/openharmony-arm64": "0.27.2", - "@esbuild/sunos-x64": "0.27.2", - "@esbuild/win32-arm64": "0.27.2", - "@esbuild/win32-ia32": "0.27.2", - "@esbuild/win32-x64": "0.27.2" - } - }, - "node_modules/vitest/node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", - "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", - "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=20" - } - }, - "node_modules/whatwg-mimetype": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", - "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - } - }, - "node_modules/whatwg-url": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz", - "integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@exodus/bytes": "^1.11.0", - "tr46": "^6.0.0", - "webidl-conversions": "^8.0.1" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.20", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", - "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/explorer/package.json b/explorer/package.json deleted file mode 100644 index 71df6b929d..0000000000 --- a/explorer/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "author": { - "name": "Dusk Network B.V.", - "url": "https://dusk.network/", - "mail": "info@dusk.network" - }, - "bugs": "https://github.com/dusk-network/rusk/issues", - "engines": { - "node": "^24.0.0" - }, - "homepage": "https://github.com/dusk-network/rusk/tree/master/explorer", - "license": "MPL-2.0", - "name": "explorer", - "private": true, - "repository": { - "type": "git", - "url": "https://github.com/dusk-network/rusk.git" - }, - "scripts": { - "build": "vite build", - "checks": "npm run format && npm run lint && npm run typecheck && npm test", - "dev": "vite dev", - "dev:host": "vite dev --host", - "format": "prettier . --check", - "format:fix": "prettier . --write", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "preview": "vite preview", - "test": "vitest --run", - "test:coverage": "vitest --run --coverage.enabled", - "test:watch": "vitest", - "typecheck": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --fail-on-warnings", - "typecheck:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch --fail-on-warnings" - }, - "type": "module", - "version": "1.5.0", - "dependencies": { - "@floating-ui/dom": "1.7.5", - "@mdi/js": "7.4.47", - "d3-geo": "3.1.1", - "d3-scale": "4.0.2", - "lamb": "0.61.1" - }, - "devDependencies": { - "@dusk-network/eslint-config": "4.0.1", - "@dusk-network/prettier-config": "1.1.0", - "@eslint/js": "9.39.2", - "@juggle/resize-observer": "3.4.0", - "@sveltejs/adapter-static": "3.0.10", - "@sveltejs/kit": "2.50.2", - "@sveltejs/vite-plugin-svelte": "3.1.2", - "@testing-library/jest-dom": "6.9.1", - "@testing-library/svelte": "5.3.1", - "@types/d3-geo": "3.1.0", - "@types/node": "25.2.0", - "@vitest/browser": "4.0.18", - "@vitest/coverage-istanbul": "4.0.18", - "autoprefixer": "10.4.24", - "eslint": "9.39.2", - "eslint-config-prettier": "10.1.8", - "eslint-import-resolver-typescript": "4.4.4", - "eslint-plugin-svelte": "3.14.0", - "globals": "17.3.0", - "jsdom": "28.0.0", - "jsdom-worker": "0.3.0", - "lamb-types": "0.61.16", - "postcss-nested": "7.0.2", - "prettier": "3.8.1", - "prettier-plugin-svelte": "3.4.1", - "svelte": "4.2.20", - "svelte-check": "4.3.6", - "svelte-preprocess": "6.0.3", - "typescript": "5.9.3", - "vite": "5.4.21", - "vite-tsconfig-paths": "6.0.5", - "vitest": "4.0.18" - } -} diff --git a/explorer/src/app.html b/explorer/src/app.html deleted file mode 100644 index e379be251d..0000000000 --- a/explorer/src/app.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - Dusk Explorer - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/explorer/src/error.html b/explorer/src/error.html deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/explorer/src/lib/chain-info/__tests__/addCountAndUnique.spec.js b/explorer/src/lib/chain-info/__tests__/addCountAndUnique.spec.js deleted file mode 100644 index 50b05a8a57..0000000000 --- a/explorer/src/lib/chain-info/__tests__/addCountAndUnique.spec.js +++ /dev/null @@ -1,180 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { apiNodeLocations } from "$lib/mock-data"; -import { addCountAndUnique } from ".."; - -describe("addCountAndUnique", () => { - it("should return an array of unique objects, sorted by the frequency of their occurrence, with an additional count property representing the number of times that city-country combination appeared", () => { - const expectedResult = [ - { - city: "North Bergen", - count: 15, - country: "United States", - countryCode: "US", - lat: 40.793, - lon: -74.0247, - }, - { - city: "Amsterdam", - count: 15, - country: "The Netherlands", - countryCode: "NL", - lat: 52.352, - lon: 4.9392, - }, - { - city: "Santa Clara", - count: 11, - country: "United States", - countryCode: "US", - lat: 37.3931, - lon: -121.962, - }, - { - city: "Frankfurt am Main", - count: 9, - country: "Germany", - countryCode: "DE", - lat: 50.1169, - lon: 8.6837, - }, - { - city: "Clifton", - count: 9, - country: "United States", - countryCode: "US", - lat: 40.8364, - lon: -74.1403, - }, - { - city: "Portsmouth", - count: 6, - country: "United Kingdom", - countryCode: "GB", - lat: 50.8544, - lon: -1.002, - }, - { - city: "Singapore", - count: 5, - country: "Singapore", - countryCode: "SG", - lat: 1.32123, - lon: 103.695, - }, - { - city: "Nuremberg", - count: 4, - country: "Germany", - countryCode: "DE", - lat: 49.405, - lon: 11.1617, - }, - { - city: "Helsinki", - count: 2, - country: "Finland", - countryCode: "FI", - lat: 60.1797, - lon: 24.9344, - }, - { - city: "Alexandria", - count: 1, - country: "Australia", - countryCode: "AU", - lat: -33.9088, - lon: 151.196, - }, - { - city: "Milan", - count: 1, - country: "Italy", - countryCode: "IT", - lat: 45.4722, - lon: 9.1922, - }, - { - city: "Sydney", - count: 1, - country: "Australia", - countryCode: "AU", - lat: -33.808, - lon: 151.1415, - }, - { - city: "Hillsboro", - count: 1, - country: "United States", - countryCode: "US", - lat: 45.5397, - lon: -122.9638, - }, - { - city: "St Louis", - count: 1, - country: "United States", - countryCode: "US", - lat: 38.6364, - lon: -90.1985, - }, - { - city: "Slough", - count: 1, - country: "United Kingdom", - countryCode: "GB", - lat: 51.5368, - lon: -0.6718, - }, - { - city: "Seattle", - count: 1, - country: "United States", - countryCode: "US", - lat: 47.3066, - lon: -122.2619, - }, - { - city: "Limerick", - count: 1, - country: "Ireland", - countryCode: "IE", - lat: 52.6669, - lon: -8.6274, - }, - { - city: "Falkenstein", - count: 1, - country: "Germany", - countryCode: "DE", - lat: 50.4777, - lon: 12.3649, - }, - { - city: "Paris", - count: 1, - country: "France", - countryCode: "FR", - lat: 48.8323, - lon: 2.4075, - }, - { - city: "Newcastle upon Tyne", - count: 1, - country: "United Kingdom", - countryCode: "GB", - lat: 54.9958, - lon: -1.6897, - }, - { - city: "Sneek", - count: 1, - country: "The Netherlands", - countryCode: "NL", - lat: 53.0366, - lon: 5.6858, - }, - ]; - - expect(addCountAndUnique(apiNodeLocations)).toStrictEqual(expectedResult); - }); -}); diff --git a/explorer/src/lib/chain-info/__tests__/calculateStats.spec.js b/explorer/src/lib/chain-info/__tests__/calculateStats.spec.js deleted file mode 100644 index a473b41681..0000000000 --- a/explorer/src/lib/chain-info/__tests__/calculateStats.spec.js +++ /dev/null @@ -1,34 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { hostProvisioners } from "$lib/mock-data"; - -import { calculateStats } from ".."; - -describe("calculateStats", () => { - const lastBlockHeight = 1498332; - - it("should calculate the stats with the given parameters", () => { - const expectedStats = { - activeProvisioners: 213, - activeStake: 56732778800000000, - lastBlock: 1498332, - waitingProvisioners: 0, - waitingStake: 0, - }; - expect(calculateStats(hostProvisioners, lastBlockHeight)).toStrictEqual( - expectedStats - ); - }); - - it("should accept an empty array of provisioners and transactions", () => { - const expectedStats = { - activeProvisioners: 0, - activeStake: 0, - lastBlock: 1498332, - waitingProvisioners: 0, - waitingStake: 0, - }; - - expect(calculateStats([], lastBlockHeight)).toStrictEqual(expectedStats); - }); -}); diff --git a/explorer/src/lib/chain-info/__tests__/transformBlock.spec.js b/explorer/src/lib/chain-info/__tests__/transformBlock.spec.js deleted file mode 100644 index 3028d7115f..0000000000 --- a/explorer/src/lib/chain-info/__tests__/transformBlock.spec.js +++ /dev/null @@ -1,105 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { setPathIn, skip, updateIn } from "lamb"; - -import { gqlBlock } from "$lib/mock-data"; - -import { transformBlock } from ".."; - -describe("transformBlock", () => { - const blockData = gqlBlock.block; - const expectedBlock = { - header: { - date: new Date(blockData.header.timestamp * 1000), - feespaid: 580718, - hash: "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - height: 495868, - nextblockhash: - "6011556208a85e6001bd01ccbf936486b91318a7f6cbcf7ab810adf6fae34204", - prevblockhash: - "07b74b35c2c7cf8f41426cd0870bafa1a2c7adee3fdd876643548096186fc4cb", - reward: 16000000000, - seed: "af15447e3a004a79d4ae8b084f7b76b78d95880bb63e1cfa79250a310731f52e6d84ee42a5d6fc2cb99c5b1f489761f6", - statehash: - "20bb0a677b93f084afadfd34bec3ac3feee33a020b81d9549afa2268e8543acb", - }, - transactions: { - data: [ - { - amount: undefined, - blobHashes: [], - blockhash: - "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - blockheight: 495868, - date: new Date(blockData.transactions[0].blockTimestamp * 1000), - feepaid: 290866, - from: undefined, - gaslimit: 500000000, - gasprice: 1, - gasspent: 290866, - memo: blockData.transactions[0].tx.memo, - method: "transfer", - nonce: undefined, - payload: {}, - success: true, - to: undefined, - txerror: "", - txid: "3a3f6f90a1012ae751b4448bcb8e98def0ba2b18170239bd69fcf8e2e37f0602", - txtype: "Moonlight", - }, - { - amount: undefined, - blobHashes: [], - blockhash: - "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - blockheight: 495868, - date: new Date(blockData.transactions[1].blockTimestamp * 1000), - feepaid: 289852, - from: undefined, - gaslimit: 500000000, - gasprice: 1, - gasspent: 289852, - memo: blockData.transactions[1].tx.memo, - method: "transfer", - nonce: undefined, - payload: {}, - success: true, - to: undefined, - txerror: "", - txid: "07bfabea1d94c16f2dc3697fa642f6cecea6e81bf76b9644efbb6e2723b76d00", - txtype: "Phoenix", - }, - ], - stats: { - averageGasPrice: 1, - gasLimit: 5000000000, - gasUsed: 580718, - }, - }, - }; - - it("should transform a block received from the API into the format used by the Explorer", () => { - expect(transformBlock(blockData)).toStrictEqual(expectedBlock); - }); - - it("should set zero as the average gas price if the gas spent isn't greater than zero", () => { - expect(transformBlock({ ...blockData, gasSpent: 0 })).toStrictEqual( - setPathIn(expectedBlock, "transactions.stats", { - ...expectedBlock.transactions.stats, - averageGasPrice: 0, - gasUsed: 0, - }) - ); - }); - - it("should set an empty string to the `nextblockhash` if it's missing", () => { - const blockWithoutNextHash = updateIn( - blockData, - "header", - skip(["nextBlockHash"]) - ); - - expect(transformBlock(blockWithoutNextHash)).toStrictEqual( - setPathIn(expectedBlock, "header.nextblockhash", "") - ); - }); -}); diff --git a/explorer/src/lib/chain-info/__tests__/transformSearchResult.spec.js b/explorer/src/lib/chain-info/__tests__/transformSearchResult.spec.js deleted file mode 100644 index f0ca4efcb8..0000000000 --- a/explorer/src/lib/chain-info/__tests__/transformSearchResult.spec.js +++ /dev/null @@ -1,28 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { gqlSearchPossibleResults } from "$lib/mock-data"; - -import { transformSearchResult } from ".."; - -describe("transformSearchResult", () => { - it("should transform an array of search results from the GraphQL API into an array of application search results", () => { - expect(transformSearchResult(gqlSearchPossibleResults[0])).toStrictEqual({ - id: "fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63", - type: "block", - }); - expect(transformSearchResult(gqlSearchPossibleResults[3])).toStrictEqual({ - id: "38a21c90324dd1ea8a3eb749a520d4f33b2304fe150eb121086fb4cf13777908", - type: "transaction", - }); - }); - - it("should return null if there is no data in the source results", () => { - expect( - transformSearchResult({ - account: null, - block: null, - tx: null, - }) - ).toStrictEqual(null); - }); -}); diff --git a/explorer/src/lib/chain-info/__tests__/transformTransaction.spec.js b/explorer/src/lib/chain-info/__tests__/transformTransaction.spec.js deleted file mode 100644 index b4ef7c6457..0000000000 --- a/explorer/src/lib/chain-info/__tests__/transformTransaction.spec.js +++ /dev/null @@ -1,147 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { gqlTransaction } from "$lib/mock-data"; - -import { transformTransaction } from ".."; - -describe("transformTransaction", () => { - const tx = gqlTransaction.tx; - const expectedTx = { - amount: 9812378912731, - blobHashes: [], - blockhash: - "3c6e4018cfa86723e50644e33d3990bc27fc794f6b49fbf6290e4d308e07bd2d", - blockheight: 487166, - date: new Date(tx.blockTimestamp * 1000), - feepaid: 290766, - from: "kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj", - gaslimit: 500000000, - gasprice: 1, - gasspent: 290766, - memo: tx.tx.memo, - method: "transfer", - nonce: 156, - payload: { - call: null, - deposit: 0, - fee: { - // eslint-disable-next-line camelcase - gas_limit: "2500000", - // eslint-disable-next-line camelcase - gas_price: "1", - // eslint-disable-next-line camelcase - refund_address: - "kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj", - }, - // eslint-disable-next-line camelcase - is_deploy: false, - memo: null, - nonce: 156, - receiver: - "mHWZo9qYUhqp2SEmtWN7EuDKFwVrjgdEyzpHdfLB6R9scRAq5EkUQyLB9fBfCGt1wjxfEpFxHq9MBPVVPY3Lk3JKnQLWZzj7UYAR4mGmeGQZwCaeCS8uA63ZPKnGpjiUnj", - sender: - "kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj", - type: "moonlight", - value: 9812378912731, - }, - - success: true, - to: "mHWZo9qYUhqp2SEmtWN7EuDKFwVrjgdEyzpHdfLB6R9scRAq5EkUQyLB9fBfCGt1wjxfEpFxHq9MBPVVPY3Lk3JKnQLWZzj7UYAR4mGmeGQZwCaeCS8uA63ZPKnGpjiUnj", - txerror: "", - txid: "4877687c2dbf154248d3ddee9ba0d81e3431f39056f82a46819da041d4ac0e04", - txtype: "Moonlight", - }; - - it("should transform a transaction received from the GraphQL API into the format used by the Explorer", () => { - expect(transformTransaction(tx)).toStrictEqual(expectedTx); - }); - - it("should use the call data if present to set the method and contract name", () => { - const data = { - ...tx, - tx: { - ...tx.tx, - callData: { - contractId: - "0200000000000000000000000000000000000000000000000000000000000000", - fnName: "stake", - }, - }, - }; - const expected = { - ...expectedTx, - method: "stake", - }; - - expect(transformTransaction(data)).toStrictEqual(expected); - }); - - it('should use "deploy" as method, if the related property is `true`, regardless of the `callData.fnName` value', () => { - const dataA = { - ...tx, - tx: { - ...tx.tx, - callData: { - contractId: - "0200000000000000000000000000000000000000000000000000000000000000", - fnName: "stake", - }, - isDeploy: true, - }, - }; - const dataB = { - ...tx, - tx: { - ...tx.tx, - isDeploy: true, - }, - }; - const expected = { - ...expectedTx, - method: "deploy", - }; - - expect(transformTransaction(dataA)).toStrictEqual(expected); - expect(transformTransaction(dataB)).toStrictEqual(expected); - }); - - it('should set the method to "blob" if the transaction has blob hashes, regardless of the `isDeploy` or the `callData.fnName` fields', () => { - const data = { - ...tx, - tx: { - ...tx.tx, - blobHashes: [ - "3656d71948baff2091090423f3b07701223b00d1a10942e44afe644a30865423", - "d26d6ebba9bfb0504040eadec111627f9f562c358f40e035ea9011b48ed7b55b", - ], - callData: { - contractId: - "0200000000000000000000000000000000000000000000000000000000000000", - fnName: "stake", - }, - isDeploy: true, - }, - }; - const expected = { - ...expectedTx, - blobHashes: data.tx.blobHashes, - method: "blob", - }; - - expect(transformTransaction(data)).toStrictEqual(expected); - }); - - it("should set the success property to `false` if the an error is present and use the message in the `txerror` property", () => { - const data = { - ...tx, - err: "Some error message", - }; - const expected = { - ...expectedTx, - success: false, - txerror: data.err, - }; - - expect(transformTransaction(data)).toStrictEqual(expected); - }); -}); diff --git a/explorer/src/lib/chain-info/addCountAndUnique.js b/explorer/src/lib/chain-info/addCountAndUnique.js deleted file mode 100644 index 44796da0b8..0000000000 --- a/explorer/src/lib/chain-info/addCountAndUnique.js +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Returns an array of unique objects, sorted by the frequency of their occurrence, - * with an additional count property representing the number of times - * that city-country combination appeared in the input data. - * - * @param {Omit[]} data - * @returns {NodeLocation[]} - */ -function addCountAndUnique(data) { - const countMap = data.reduce((locationMap, location) => { - const key = `${location.city},${location.country}`; - - if (!locationMap[key]) { - locationMap[key] = { ...location, count: 0 }; - } - locationMap[key].count += 1; - return locationMap; - }, /** @type {{ [key: string]: NodeLocation }} */ ({})); - - // Return only unique city-country combinations - return Object.values(countMap).sort((a, b) => b.count - a.count); -} - -export default addCountAndUnique; diff --git a/explorer/src/lib/chain-info/calculateStats.js b/explorer/src/lib/chain-info/calculateStats.js deleted file mode 100644 index d497cdaed3..0000000000 --- a/explorer/src/lib/chain-info/calculateStats.js +++ /dev/null @@ -1,43 +0,0 @@ -import { always, condition, filterWith, partition } from "lamb"; - -import { arraySumByKey } from "$lib/dusk/array"; - -/** - * We take into account only provisioners with - * the minimum stake amount of 1000 Dusk (1e12 Lux). - * - * @type {(provisioners: HostProvisioner[]) => HostProvisioner[]} - */ -const getValidProvisioners = filterWith((p) => p.amount >= 1e12); - -/** - * Sums the values of the "amount" key in the received array. - * Returns zero if the array is empty. - */ -const sumByAmount = condition( - (provisioners) => provisioners.length > 0, - arraySumByKey("amount"), - always(0) -); - -/** - * @param {HostProvisioner[]} provisioners - * @param {number} lastHeight - * @returns {Stats} - */ -function calculateStats(provisioners, lastHeight) { - const [activeProvisioners, waitingProvisioners] = partition( - getValidProvisioners(provisioners), - (p) => p.eligibility <= lastHeight - ); - - return { - activeProvisioners: activeProvisioners.length, - activeStake: sumByAmount(activeProvisioners), - lastBlock: lastHeight, - waitingProvisioners: waitingProvisioners.length, - waitingStake: sumByAmount(waitingProvisioners), - }; -} - -export default calculateStats; diff --git a/explorer/src/lib/chain-info/chain-info.d.ts b/explorer/src/lib/chain-info/chain-info.d.ts deleted file mode 100644 index 80ce05e403..0000000000 --- a/explorer/src/lib/chain-info/chain-info.d.ts +++ /dev/null @@ -1,57 +0,0 @@ -type BlockHeader = { - date: Date; - feespaid: number; - hash: string; - height: number; - nextblockhash: string; - prevblockhash: string; - reward: number; - seed: string; - statehash: string; -}; - -type BlockTransactions = { - data: Transaction[]; - stats: { - averageGasPrice: number; - gasLimit: number; - gasUsed: number; - }; -}; - -type Block = { - header: BlockHeader; - transactions: BlockTransactions; -}; - -type ChainInfo = { - blocks: Block[]; - transactions: Transaction[]; -}; - -type SearchResult = { - id: string; - type: "account" | "block" | "transaction"; -}; - -type Transaction = { - amount: number | undefined; - blobHashes: string[]; - from: string | undefined; - to: string | undefined; - blockhash: string; - blockheight: number; - date: Date; - feepaid: number; - gaslimit: number; - gasprice: number; - gasspent: number; - memo: string; - method: string; - success: boolean; - txerror: string; - txid: string; - txtype: string; - payload: string; - nonce: number | undefined; -}; diff --git a/explorer/src/lib/chain-info/index.js b/explorer/src/lib/chain-info/index.js deleted file mode 100644 index af6e59ff46..0000000000 --- a/explorer/src/lib/chain-info/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as addCountAndUnique } from "./addCountAndUnique"; -export { default as calculateStats } from "./calculateStats"; -export { default as transformBlock } from "./transformBlock"; -export { default as transformSearchResult } from "./transformSearchResult"; -export { default as transformTransaction } from "./transformTransaction"; diff --git a/explorer/src/lib/chain-info/transformBlock.js b/explorer/src/lib/chain-info/transformBlock.js deleted file mode 100644 index 61d9fbefce..0000000000 --- a/explorer/src/lib/chain-info/transformBlock.js +++ /dev/null @@ -1,30 +0,0 @@ -import { map } from "lamb"; - -import { unixTsToDate } from "$lib/dusk/date"; - -import { transformTransaction } from "."; - -/** @type {(v: GQLBlock) => Block} */ -const transformBlock = (v) => ({ - header: { - date: unixTsToDate(v.header.timestamp), - feespaid: v.fees, - hash: v.header.hash, - height: v.header.height, - nextblockhash: v.header.nextBlockHash ?? "", - prevblockhash: v.header.prevBlockHash, - reward: v.reward, - seed: v.header.seed, - statehash: v.header.stateHash, - }, - transactions: { - data: map(v.transactions, transformTransaction), - stats: { - averageGasPrice: v.gasSpent > 0 ? v.fees / v.gasSpent : 0, - gasLimit: v.header.gasLimit, - gasUsed: v.gasSpent, - }, - }, -}); - -export default transformBlock; diff --git a/explorer/src/lib/chain-info/transformSearchResult.js b/explorer/src/lib/chain-info/transformSearchResult.js deleted file mode 100644 index f471c4be6f..0000000000 --- a/explorer/src/lib/chain-info/transformSearchResult.js +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Transforms a GQL search result into a standardized search result. - * @param {GQLSearchResult} entry - The GQL search result to transform - * @returns {SearchResult | null} The transformed search result - */ -const transformSearchResult = (entry) => { - if (entry.block) { - return { - id: entry.block.header.hash, - type: "block", - }; - } else if (entry.tx) { - return { - id: entry.tx.id, - type: "transaction", - }; - } else if (entry.account) { - return { - id: entry.account.id, - type: "account", - }; - } - - return null; -}; - -export default transformSearchResult; diff --git a/explorer/src/lib/chain-info/transformTransaction.js b/explorer/src/lib/chain-info/transformTransaction.js deleted file mode 100644 index ebba38ed52..0000000000 --- a/explorer/src/lib/chain-info/transformTransaction.js +++ /dev/null @@ -1,39 +0,0 @@ -import { unixTsToDate } from "$lib/dusk/date"; - -/** @type {(tx: GQLTransaction["tx"]) => string} */ -const getTransactionMethod = (tx) => - tx.blobHashes && tx.blobHashes.length - ? "blob" - : tx.isDeploy - ? "deploy" - : (tx.callData?.fnName ?? "transfer"); - -/** @type {(v: GQLTransaction) => Transaction} */ -const transformTransaction = (tx) => { - const payloadString = tx.tx.json ?? "{}"; - const payload = JSON.parse(payloadString); - - return { - amount: payload.value, - blobHashes: tx.tx.blobHashes ?? [], - blockhash: tx.blockHash, - blockheight: tx.blockHeight, - date: unixTsToDate(tx.blockTimestamp), - feepaid: tx.gasSpent * tx.tx.gasPrice, - from: payload.sender, - gaslimit: tx.tx.gasLimit, - gasprice: tx.tx.gasPrice, - gasspent: tx.gasSpent, - memo: tx.tx.memo ?? "", - method: getTransactionMethod(tx.tx), - nonce: payload.nonce, - payload, - success: tx.err === null, - to: payload.receiver, - txerror: tx.err ?? "", - txid: tx.id, - txtype: tx.tx.txType, - }; -}; - -export default transformTransaction; diff --git a/explorer/src/lib/components/__tests__/AppAnchor.spec.js b/explorer/src/lib/components/__tests__/AppAnchor.spec.js deleted file mode 100644 index 72c1d1414b..0000000000 --- a/explorer/src/lib/components/__tests__/AppAnchor.spec.js +++ /dev/null @@ -1,76 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { base } from "$app/paths"; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -import { AppAnchor } from ".."; - -describe("AppAnchor", () => { - const baseProps = { - className: "foo bar", - href: "/setup", - id: "some-id", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render an `Anchor` with the base path prepended to the `href` attribute, if the `href` represents an absolute URL", () => { - const renderA = renderWithSimpleContent(AppAnchor, baseOptions); - const anchorA = renderA.getByRole("link"); - - expect(renderA.container.firstChild).toMatchSnapshot(); - expect(anchorA).toHaveAttribute("href", `${base}${baseProps.href}`); - expect(anchorA).toHaveClass("foo bar"); - expect(anchorA).toHaveAttribute("id", baseProps.id); - - cleanup(); - - const renderB = renderWithSimpleContent(AppAnchor, { - ...baseOptions, - props: { ...baseProps, href: "/" }, - }); - const anchorB = renderB.getByRole("link"); - - expect(anchorB).toHaveAttribute("href", `${base}/`); - expect(anchorB).toHaveClass("foo bar"); - expect(anchorB).toHaveAttribute("id", baseProps.id); - }); - - it("should leave the `Anchor` as it is if the `href` points to a relative path", () => { - const { getByRole } = renderWithSimpleContent(AppAnchor, { - ...baseOptions, - props: { ...baseProps, href: "foo/bar" }, - }); - - expect(getByRole("link")).toHaveAttribute("href", "foo/bar"); - }); - - it("should leave the `Anchor` as it is if the `href` points to an external URL", () => { - const href = "http://example.com"; - const { getByRole } = renderWithSimpleContent(AppAnchor, { - ...baseOptions, - props: { ...baseProps, href }, - }); - - expect(getByRole("link")).toHaveAttribute("href", href); - }); - - it("should forward the `onclick` event to the `Anchor`", async () => { - const handler = vi.fn(); - const { component, getByRole } = render(AppAnchor, { - ...baseProps, - href: "#", - }); - - component.$on("click", handler); - - await fireEvent.click(getByRole("link")); - - expect(handler).toHaveBeenCalledTimes(1); - }); -}); diff --git a/explorer/src/lib/components/__tests__/AppAnchorButton.spec.js b/explorer/src/lib/components/__tests__/AppAnchorButton.spec.js deleted file mode 100644 index 53013383a1..0000000000 --- a/explorer/src/lib/components/__tests__/AppAnchorButton.spec.js +++ /dev/null @@ -1,66 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { base } from "$app/paths"; - -import { AppAnchorButton } from ".."; - -describe("AppAnchorButton", () => { - const baseProps = { - className: "foo bar", - href: "/setup", - id: "some-id", - }; - - afterEach(cleanup); - - it("should render an `AnchorButton` with the base path prepended to the `href` attribute, if the `href` represents an absolute URL", async () => { - const { container, getByRole, rerender } = render( - AppAnchorButton, - baseProps - ); - const anchorA = getByRole("link"); - - expect(container.firstChild).toMatchSnapshot(); - expect(anchorA).toHaveAttribute("href", `${base}${baseProps.href}`); - expect(anchorA).toHaveClass("foo bar"); - expect(anchorA).toHaveAttribute("id", baseProps.id); - - await rerender({ ...baseProps, href: "/" }); - - const anchorB = getByRole("link"); - - expect(anchorB).toHaveAttribute("href", `${base}/`); - expect(anchorB).toHaveClass("foo bar"); - expect(anchorB).toHaveAttribute("id", baseProps.id); - }); - - it("should leave the `AnchorButton` as it is if the `href` points to a relative path", () => { - const { getByRole } = render(AppAnchorButton, { - ...baseProps, - href: "foo/bar", - }); - - expect(getByRole("link")).toHaveAttribute("href", "foo/bar"); - }); - - it("should leave the `AnchorButton` as it is if the `href` points to an external URL", () => { - const href = "http://example.com"; - const { getByRole } = render(AppAnchorButton, { ...baseProps, href }); - - expect(getByRole("link")).toHaveAttribute("href", href); - }); - - it("should forward the `onclick` event to the `AnchorButton`", async () => { - const handler = vi.fn(); - const { component, getByRole } = render(AppAnchorButton, { - ...baseProps, - href: "#", - }); - - component.$on("click", handler); - - await fireEvent.click(getByRole("link")); - - expect(handler).toHaveBeenCalledTimes(1); - }); -}); diff --git a/explorer/src/lib/components/__tests__/AppImage.spec.js b/explorer/src/lib/components/__tests__/AppImage.spec.js deleted file mode 100644 index 4adea21827..0000000000 --- a/explorer/src/lib/components/__tests__/AppImage.spec.js +++ /dev/null @@ -1,53 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { base } from "$app/paths"; - -import { AppImage } from ".."; - -describe("AppImage", () => { - const baseProps = { - alt: "Some alternative text", - className: "foo bar", - height: "600", - src: "/images/some-image.jpg", - width: "800", - }; - - afterEach(cleanup); - - it("should render an HTML image forwarding all attributes but with the base path prepended to the `src` if it's an absolute URL", async () => { - const { container, getByRole, rerender } = render(AppImage, baseProps); - const imgA = getByRole("img"); - - expect(container.firstChild).toMatchSnapshot(); - expect(imgA).toHaveAttribute("alt", baseProps.alt); - expect(imgA).toHaveClass("foo bar"); - expect(imgA).toHaveAttribute("height", baseProps.height); - expect(imgA).toHaveAttribute("src", `${base}${baseProps.src}`); - expect(imgA).toHaveAttribute("width", baseProps.width); - - await rerender({ ...baseProps, className: "baz", src: "/" }); - - const imgB = getByRole("img"); - - expect(imgB).toHaveAttribute("alt", baseProps.alt); - expect(imgB).toHaveClass("baz"); - expect(imgB).toHaveAttribute("height", baseProps.height); - expect(imgB).toHaveAttribute("src", `${base}/`); - expect(imgB).toHaveAttribute("width", baseProps.width); - }); - - it("shouldn't touch the src attribute if it represents a relative path", () => { - const src = "images/some-image.jpg"; - const { getByRole } = render(AppImage, { ...baseProps, src }); - - expect(getByRole("img")).toHaveAttribute("src", src); - }); - - it("shoudn't touch the `src` attribute if it points to an external URL", () => { - const src = "http://example.com/some-image.jpg"; - const { getByRole } = render(AppImage, { ...baseProps, src }); - - expect(getByRole("img")).toHaveAttribute("src", src); - }); -}); diff --git a/explorer/src/lib/components/__tests__/AppSource.spec.js b/explorer/src/lib/components/__tests__/AppSource.spec.js deleted file mode 100644 index 3a6004992e..0000000000 --- a/explorer/src/lib/components/__tests__/AppSource.spec.js +++ /dev/null @@ -1,119 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { ownPairs } from "lamb"; -import { base } from "$app/paths"; - -import { AppSource } from ".."; - -/** @type {(container: HTMLElement) => HTMLSourceElement} */ -const getSourceElementIn = (container) => - /** @type {HTMLSourceElement} */ (container.querySelector("source")); - -describe("AppSource", () => { - const commonProps = { - "data-foo": "bar", - height: "600", - type: "image/jpeg", - width: "800", - }; - - afterEach(cleanup); - - describe("src attribute", () => { - const baseProps = { - ...commonProps, - src: "/images/some-image.jpg", - }; - - it("should render a source element forwarding all attributes but with the base path prepended to the `src` if it's an absolute URL", async () => { - const { container, rerender } = render(AppSource, baseProps); - const source = getSourceElementIn(container); - - expect(container.firstChild).toMatchSnapshot(); - - ownPairs(commonProps).forEach(([key, value]) => { - expect(source).toHaveAttribute(key, value); - }); - - expect(source).toHaveAttribute("src", `${base}${baseProps.src}`); - - await rerender({ ...baseProps, src: "/" }); - - expect(getSourceElementIn(container)).toHaveAttribute("src", `${base}/`); - }); - - it("shouldn't touch a `src` with a relative path", () => { - const src = "images/some-image.jpg"; - const { container } = render(AppSource, { ...baseProps, src }); - - expect(getSourceElementIn(container)).toHaveAttribute("src", src); - }); - - it("shoudn't touch a `src` with an external URL", () => { - const src = "http://example.com/some-image.jpg"; - const { container } = render(AppSource, { ...baseProps, src }); - - expect(getSourceElementIn(container)).toHaveAttribute("src", src); - }); - }); - - describe("srcset attribute", () => { - it("should render a source element forwarding all attributes but with the base path prepended to absolute URLs in the `srcset`", async () => { - const props = { - ...commonProps, - srcset: "/images/some-image.jpg 1.5x", - }; - const { container, rerender } = render(AppSource, props); - const source = getSourceElementIn(container); - - expect(container.firstChild).toMatchSnapshot(); - - ownPairs(commonProps).forEach(([key, value]) => { - expect(source).toHaveAttribute(key, value); - }); - - expect(source).toHaveAttribute("srcset", `${base}${props.srcset}`); - - await rerender({ ...props, srcset: "/images/some-image.jpg" }); - - expect(getSourceElementIn(container)).toHaveAttribute( - "srcset", - `${base}/images/some-image.jpg` - ); - - await rerender({ ...props, srcset: "/ 1.5x" }); - - expect(getSourceElementIn(container)).toHaveAttribute( - "srcset", - `${base}/ 1.5x` - ); - }); - - it("should be able to handle multiple values in the srcset", () => { - const props = { - ...commonProps, - srcset: "/images/some-image.jpg 1.5x, /foo.jpg, /bar/baz.jpg 300w", - }; - const { container } = render(AppSource, props); - - expect(getSourceElementIn(container)).toHaveAttribute( - "srcset", - `${base}/images/some-image.jpg 1.5x, ${base}/foo.jpg, ${base}/bar/baz.jpg 300w` - ); - }); - - it("shouldn't touch elements with relative or absolute URLs in the srcset", () => { - const props = { - ...commonProps, - srcset: - "/images/some-image.jpg 1.5x, http://example.com/foo.jpg, bar/baz.jpg 300w", - }; - const { container } = render(AppSource, props); - - expect(getSourceElementIn(container)).toHaveAttribute( - "srcset", - `${base}/images/some-image.jpg 1.5x, http://example.com/foo.jpg, bar/baz.jpg 300w` - ); - }); - }); -}); diff --git a/explorer/src/lib/components/__tests__/BlockDetails.spec.js b/explorer/src/lib/components/__tests__/BlockDetails.spec.js deleted file mode 100644 index baab988038..0000000000 --- a/explorer/src/lib/components/__tests__/BlockDetails.spec.js +++ /dev/null @@ -1,89 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { setPathIn } from "lamb"; - -import { gqlBlock } from "$lib/mock-data"; -import { transformBlock } from "$lib/chain-info"; - -import { BlockDetails } from "../"; - -/** - * @param {HTMLElement} container - * @param {"next" | "prev"} which - * @returns {HTMLAnchorElement?} - */ -const getBlockNavLink = (container, which) => - container.querySelector( - `.block-details__list-anchor:nth-of-type(${which === "prev" ? "1" : "2"})` - ); - -describe("Block Details", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20)); - - const baseProps = { - data: transformBlock(gqlBlock.block), - error: null, - loading: false, - payload: - '{"version":1,"height":21455,"timestamp":1726246600,"prev_block_hash":"940d0a9a35f30103554e9d74ae504d4a3f679bda7b925df9bff1002424a5a748","seed":"a6b11ca51a17bbe4899e3a924d2c7e087d2836800f276db9cf3e36516b4bf9a99aa8507567cbc3ab9a2c3f0390a47748","state_hash":"70a544fbea9914958dc3dba1824956a1b6de37fbfbc42d2c3e219793b8ce8017","event_hash":"02aee0f39c5936122a5ce52aacf4cf29949dd6d3eec38979ddc1bbb0b6192e34","generator_bls_pubkey":"244Sywxj7PuMHpcPxemaXLcrY5rPgztra6H9Vz8cU1Ro5v23SxKTfVqr2yS7NXAXE1iq59ndn4aMZmYxuzu3Te3e9fokQKTUkYvFxYg2P2E8EEg1gWUbs3AFL2aNx62HQd7r","txroot":"522addb8dae45b71ef281a76c86c6babef0678c8bc2d58d617dc33fa7722b021","faultroot":"0000000000000000000000000000000000000000000000000000000000000000","gas_limit":5000000000,"iteration":0,"prev_block_cert":{"result":{"Valid":"940d0a9a35f30103554e9d74ae504d4a3f679bda7b925df9bff1002424a5a748"},"validation":{"bitset":256882,"aggregate_signature":"877eedaf65d9fab0b309f5f8b01df38a379612854aa6fb63009b2b3d6c92de494d79d8c612daae50e33cd3b1418a9a9e"},"ratification":{"bitset":386423,"aggregate_signature":"a98a84b6ba9a88fde1a063538807aa35b2af1c52360bf564d9c19abd3d22ba9be9f87ce38c97b580fc05df8c920b9da4"}},"failed_iterations":[],"hash":"22c7e588560a133d1c142c2fe4c067e8b500ced43d5f9ae19cf55f1caf4dd899"}', - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("renders the Block Details component", () => { - const { container } = render(BlockDetails, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the previous block link if the prev block hash is empty or if the current height is `0`", async () => { - const { container, rerender } = render( - BlockDetails, - setPathIn(baseProps, "data.header.prevblockhash", "") - ); - - expect(getBlockNavLink(container, "prev")).toHaveAttribute( - "aria-disabled", - "true" - ); - - await rerender(baseProps); - - expect(getBlockNavLink(container, "prev")).toHaveAttribute( - "aria-disabled", - "false" - ); - - await rerender(setPathIn(baseProps, "data.header.height", 0)); - - expect(getBlockNavLink(container, "prev")).toHaveAttribute( - "aria-disabled", - "true" - ); - }); - - it("should disable the next block link if the next block hash is empty", () => { - const { container } = render( - BlockDetails, - setPathIn(baseProps, "data.header.nextblockhash", "") - ); - - expect(getBlockNavLink(container, "next")).toHaveAttribute( - "aria-disabled", - "true" - ); - }); - - it("should render the Block Details component with the payload visible", async () => { - const { container, getByRole } = render(BlockDetails, baseProps); - - await fireEvent.click(getByRole("switch")); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/BlocksCard.spec.js b/explorer/src/lib/components/__tests__/BlocksCard.spec.js deleted file mode 100644 index ebf209e0b1..0000000000 --- a/explorer/src/lib/components/__tests__/BlocksCard.spec.js +++ /dev/null @@ -1,76 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { compose, mapWith, take } from "lamb"; - -import { gqlBlocks } from "$lib/mock-data"; -import { transformBlock } from "$lib/chain-info"; -import { BlocksCard } from ".."; - -describe("Blocks Card", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 30)); - - const getTenBlocks = compose(mapWith(transformBlock), take(10)); - const data = getTenBlocks(gqlBlocks.blocks); - - const baseProps = { - blocks: null, - error: null, - isSmallScreen: false, - loading: false, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should render the `BlocksCard` component", () => { - const { container } = render(BlocksCard, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button is the card is in the loading state", () => { - const loading = true; - - const { container, getByRole } = render(BlocksCard, { - ...baseOptions, - props: { ...baseProps, loading }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button if there is no more data to display", async () => { - const loading = false; - const blocks = data; - - const { container, getByRole } = render(BlocksCard, { - ...baseOptions, - props: { ...baseProps, blocks, loading }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should hide the `Show More` button if an error has occurred", async () => { - const props = { ...baseProps, error: new Error("error") }; - - const { container } = render(BlocksCard, { - ...baseOptions, - props: { ...props, error: new Error("error") }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/BlocksList.spec.js b/explorer/src/lib/components/__tests__/BlocksList.spec.js deleted file mode 100644 index 4062705614..0000000000 --- a/explorer/src/lib/components/__tests__/BlocksList.spec.js +++ /dev/null @@ -1,64 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { setPathIn } from "lamb"; - -import { gqlBlock } from "$lib/mock-data"; -import { transformBlock } from "$lib/chain-info"; - -import { BlocksList } from ".."; - -/** @param {HTMLElement} container */ -function getTimeElement(container) { - return /** @type {HTMLTimeElement} */ (container.querySelector("time")); -} - -describe("Blocks List", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20)); - - const block = transformBlock(gqlBlock.block); - - /** @type {import("svelte").ComponentProps} */ - const baseProps = { data: block }; - - const timeRefreshInterval = 1000; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("renders the Blocks List component", () => { - const { container } = render(BlocksList, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should auto-refresh relative times when the related prop is set to true", async () => { - const props = { - ...baseProps, - data: setPathIn(block, "header.date", new Date()), - }; - const { container, rerender } = render(BlocksList, props); - const timeElement = getTimeElement(container); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"now"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval * 3); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"now"`); - - await rerender({ ...props, autoRefreshTime: true }); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"3 seconds ago"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"4 seconds ago"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"5 seconds ago"`); - }); -}); diff --git a/explorer/src/lib/components/__tests__/BlocksTable.spec.js b/explorer/src/lib/components/__tests__/BlocksTable.spec.js deleted file mode 100644 index ebe27f76e6..0000000000 --- a/explorer/src/lib/components/__tests__/BlocksTable.spec.js +++ /dev/null @@ -1,36 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { mapWith, slice } from "lamb"; - -import { gqlBlocks } from "$lib/mock-data"; -import { transformBlock } from "$lib/chain-info"; - -import { BlocksTable } from ".."; - -describe("Blocks Table", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 30)); - - const transformBlocks = mapWith(transformBlock); - const data = slice(transformBlocks(gqlBlocks.blocks), 0, 10); - - const baseProps = { - data: data, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should render the `BlocksTable` component", () => { - const { container } = render(BlocksTable, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/DataAlert.spec.js b/explorer/src/lib/components/__tests__/DataAlert.spec.js deleted file mode 100644 index e88a9de95d..0000000000 --- a/explorer/src/lib/components/__tests__/DataAlert.spec.js +++ /dev/null @@ -1,45 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; - -import { DataAlert } from ".."; - -describe("DataAlert", () => { - const baseProps = { - error: null, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the `DataAlert` in the no data state", () => { - const { container } = render(DataAlert, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataAlert` in the error state", () => { - const error = new Error("error"); - const { container } = render(DataAlert, { - ...baseOptions, - props: { ...baseProps, error }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should dispatch the `retry` event on button click", async () => { - const eventHandler = vi.fn(); - const error = new Error("error"); - const { component, getByRole } = render(DataAlert, { - ...baseOptions, - props: { ...baseProps, error }, - }); - - component.$on("retry", eventHandler); - await fireEvent.click(getByRole("button")); - expect(eventHandler).toHaveBeenCalledTimes(1); - }); -}); diff --git a/explorer/src/lib/components/__tests__/DataCard.spec.js b/explorer/src/lib/components/__tests__/DataCard.spec.js deleted file mode 100644 index 24957ef8ae..0000000000 --- a/explorer/src/lib/components/__tests__/DataCard.spec.js +++ /dev/null @@ -1,105 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -import { DataCard } from ".."; - -describe("DataCard", () => { - const baseProps = { - data: null, - error: null, - headerButtonDetails: { action: () => {}, disabled: false, label: "Button" }, - loading: false, - title: "Title", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the `DataCard` in the loading state", () => { - const loading = true; - const { container } = render(DataCard, { - ...baseOptions, - props: { ...baseProps, loading }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataCard` in the error state", () => { - const error = new Error("error"); - const { container } = render(DataCard, { - ...baseOptions, - props: { ...baseProps, error }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataCard` in the no data state", () => { - const data = new Array(0); - const { container } = render(DataCard, { - ...baseOptions, - props: { ...baseProps, data }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataCard` in the data state", () => { - const data = new Array(2); - const renderWithSlots = renderWithSimpleContent(DataCard, { - ...baseOptions, - props: { ...baseProps, data }, - }); - - expect(renderWithSlots.container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataCard` in the data state when loading is true", () => { - const data = new Array(2); - const loading = true; - const renderWithSlots = renderWithSimpleContent(DataCard, { - ...baseOptions, - props: { ...baseProps, data, loading }, - }); - - expect(renderWithSlots.container.firstChild).toMatchSnapshot(); - }); - - it("should pass the correct function to the button on click event", async () => { - const onClickMock = vi.fn(); - const headerButtonDetails = { - action: onClickMock, - disabled: false, - label: "Back", - }; - const { getByRole } = render(DataCard, { - ...baseOptions, - props: { ...baseProps, headerButtonDetails }, - }); - - await fireEvent.click(getByRole("button")); - - expect(onClickMock).toHaveBeenCalledTimes(1); - }); - - it("should render the `DataCard` with a disabled button", () => { - const headerButtonDetails = { - action: () => {}, - disabled: true, - label: "Back", - }; - const { container, getByRole } = render(DataCard, { - ...baseOptions, - props: { ...baseProps, headerButtonDetails }, - }); - - expect(getByRole("button")).toBeDisabled(); - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/DataGuard.spec.js b/explorer/src/lib/components/__tests__/DataGuard.spec.js deleted file mode 100644 index e34d9dad88..0000000000 --- a/explorer/src/lib/components/__tests__/DataGuard.spec.js +++ /dev/null @@ -1,34 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -import { DataGuard } from ".."; - -describe("DataGuard", () => { - const baseProps = { - data: null, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the `DataGuard` with the placeholder if no data is passed", () => { - const { container } = render(DataGuard, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the `DataGuard` if data is present", () => { - const data = 1; - const renderWithSlots = renderWithSimpleContent(DataGuard, { - ...baseOptions, - props: { ...baseProps, data }, - }); - - expect(renderWithSlots.container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/DetailList.spec.js b/explorer/src/lib/components/__tests__/DetailList.spec.js deleted file mode 100644 index 9fa93bbb53..0000000000 --- a/explorer/src/lib/components/__tests__/DetailList.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup } from "@testing-library/svelte"; -import { DetailList } from ".."; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -describe("Detail List", () => { - const baseProps = { className: "foo bar" }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("renders the Detail List component", () => { - const render = renderWithSimpleContent(DetailList, baseOptions); - - expect(render.container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/Footer.spec.js b/explorer/src/lib/components/__tests__/Footer.spec.js deleted file mode 100644 index c4041abf53..0000000000 --- a/explorer/src/lib/components/__tests__/Footer.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { Footer } from "../"; - -describe("Footer", () => { - beforeEach(() => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2025, 0, 1)); - }); - - afterEach(() => { - cleanup(); - vi.useRealTimers(); - }); - - it("renders the Footer component", () => { - const { container } = render(Footer); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/ListItem.spec.js b/explorer/src/lib/components/__tests__/ListItem.spec.js deleted file mode 100644 index 98c72ef38b..0000000000 --- a/explorer/src/lib/components/__tests__/ListItem.spec.js +++ /dev/null @@ -1,17 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { ListItem } from "../"; - -const baseProps = { - tooltipText: "Tooltip text", -}; - -describe("List Item", () => { - afterEach(cleanup); - - it("renders the List Item component", () => { - const { container } = render(ListItem, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/Navbar.spec.js b/explorer/src/lib/components/__tests__/Navbar.spec.js deleted file mode 100644 index a312c0125d..0000000000 --- a/explorer/src/lib/components/__tests__/Navbar.spec.js +++ /dev/null @@ -1,109 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { act, cleanup, fireEvent, render } from "@testing-library/svelte"; -import * as appNavigation from "$app/navigation"; - -import { Navbar } from ".."; - -/** @param {HTMLElement} container */ -const getNotificationElement = (container) => - container.querySelector(".dusk-navbar__menu--search-notification"); - -/** @param {HTMLElement} container */ -async function showSearchNotification(container) { - const form = /** @type {HTMLFormElement} */ (container.querySelector("form")); - const searchInput = /** @type {HTMLInputElement} */ ( - form.querySelector("input[type='text']") - ); - - searchInput.value = "foobar"; // invalid search - - await fireEvent.submit(form); -} - -describe("Navbar", () => { - /** @type {(navigation: import("@sveltejs/kit").AfterNavigate) => void} */ - let afterNavigateCallback; - - const afterNavigateSpy = vi - .spyOn(appNavigation, "afterNavigate") - .mockImplementation((fn) => { - afterNavigateCallback = fn; - }); - - afterEach(() => { - cleanup(); - afterNavigateSpy.mockClear(); - }); - - afterAll(() => { - afterNavigateSpy.mockRestore(); - }); - - it("renders the Navbar component", () => { - const { container } = render(Navbar); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should hide the mobile menu after a navigation event", async () => { - const { container } = render(Navbar); - - const btnMenuToggle = /** @type {HTMLButtonElement} */ ( - container.querySelector(".dusk-navbar__toggle") - ); - const menu = /** @type {HTMLDivElement} */ ( - container.querySelector(".dusk-navbar__menu") - ); - - expect(menu).toHaveClass("dusk-navbar__menu--hidden"); - expect(btnMenuToggle).toHaveAttribute("aria-expanded", "false"); - - await fireEvent.click(btnMenuToggle); - - expect(menu).not.toHaveClass("dusk-navbar__menu--hidden"); - expect(btnMenuToggle).toHaveAttribute("aria-expanded", "true"); - - await act(() => { - // @ts-expect-error we don't care for navigation details - afterNavigateCallback(); - }); - - expect(menu).toHaveClass("dusk-navbar__menu--hidden"); - expect(btnMenuToggle).toHaveAttribute("aria-expanded", "false"); - }); - - it("should hide the search notification when its close button is clicked", async () => { - const { container } = render(Navbar); - - expect(getNotificationElement(container)).toBeNull(); - - await showSearchNotification(container); - - expect(getNotificationElement(container)).toBeInTheDocument(); - - const btnClose = /** @type {HTMLButtonElement} */ ( - container.querySelector(".search-notification__header-action") - ); - - await fireEvent.click(btnClose); - - expect(getNotificationElement(container)).toBeNull(); - }); - - it("should hide the search notification after a navigation event", async () => { - const { container } = render(Navbar); - - expect(getNotificationElement(container)).toBeNull(); - - await showSearchNotification(container); - - expect(getNotificationElement(container)).toBeInTheDocument(); - - await act(() => { - // @ts-expect-error we don't care for navigation details - afterNavigateCallback(); - }); - - expect(getNotificationElement(container)).toBeNull(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/ProvisionersCard.spec.js b/explorer/src/lib/components/__tests__/ProvisionersCard.spec.js deleted file mode 100644 index bd2a517c1e..0000000000 --- a/explorer/src/lib/components/__tests__/ProvisionersCard.spec.js +++ /dev/null @@ -1,67 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { slice } from "lamb"; - -import { hostProvisioners } from "$lib/mock-data"; -import { ProvisionersCard } from ".."; - -describe("Provisioners Card", () => { - const data = slice(hostProvisioners, 0, 10); - - const baseProps = { - error: null, - isSmallScreen: false, - loading: false, - provisioners: null, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the `ProvisionersCard` component", () => { - const { container } = render(ProvisionersCard, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button is the card is in the loading state", () => { - const loading = true; - - const { container, getByRole } = render(ProvisionersCard, { - ...baseOptions, - props: { ...baseProps, loading }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button if there is no more data to display", async () => { - const loading = false; - const provisioners = data; - - const { container, getByRole } = render(ProvisionersCard, { - ...baseOptions, - props: { ...baseProps, loading, provisioners }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should hide the `Show More` button if an error has occurred", async () => { - const props = { ...baseProps, error: new Error("error") }; - - const { container } = render(ProvisionersCard, { - ...baseOptions, - props: { ...props, error: new Error("error") }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/ProvisionersList.spec.js b/explorer/src/lib/components/__tests__/ProvisionersList.spec.js deleted file mode 100644 index 060fff9e30..0000000000 --- a/explorer/src/lib/components/__tests__/ProvisionersList.spec.js +++ /dev/null @@ -1,22 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { slice } from "lamb"; - -import { enrichedProvisioners } from "$lib/mock-data"; - -import { ProvisionersList } from ".."; - -describe("Provisioners List", () => { - const provisioners = slice(enrichedProvisioners, 0, 1)[0]; - - /** @type {import("svelte").ComponentProps} */ - const baseProps = { data: provisioners }; - - afterEach(cleanup); - - it("renders the `ProvisionersList` component", () => { - const { container } = render(ProvisionersList, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/ProvisionersTable.spec.js b/explorer/src/lib/components/__tests__/ProvisionersTable.spec.js deleted file mode 100644 index cfac6cfd8d..0000000000 --- a/explorer/src/lib/components/__tests__/ProvisionersTable.spec.js +++ /dev/null @@ -1,26 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { slice } from "lamb"; -import { enrichedProvisioners } from "$lib/mock-data"; - -import { ProvisionersTable } from ".."; - -describe("Provisioners Table", () => { - const data = slice(enrichedProvisioners, 0, 10); - - const baseProps = { - data: data, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the `ProvisionersTable` component", () => { - const { container } = render(ProvisionersTable, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/SearchNotification.spec.js b/explorer/src/lib/components/__tests__/SearchNotification.spec.js deleted file mode 100644 index 8872014e51..0000000000 --- a/explorer/src/lib/components/__tests__/SearchNotification.spec.js +++ /dev/null @@ -1,52 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { SearchNotification } from "../"; - -describe("Search Notification", () => { - const baseProps = { - data: { - query: "some query text", - res: [], - }, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - const eventHandler = vi.fn(); - - afterEach(() => { - cleanup(); - eventHandler.mockClear(); - }); - - it("renders the Search Notification component with the query string", () => { - const { container } = render(SearchNotification, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the Search Notification component with a Error message", () => { - const props = { - ...baseProps, - data: { - query: "some query text", - res: new Error("HTTP Request failed - failed"), - }, - }; - const { container } = render(SearchNotification, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should dispatch a 'close' event when the button is clicked", async () => { - const { component, getByRole } = render(SearchNotification, baseOptions); - - component.$on("close", eventHandler); - - const button = getByRole("button"); - await fireEvent.click(button); - expect(eventHandler).toHaveBeenCalledOnce(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/StaleDataNotice.spec.js b/explorer/src/lib/components/__tests__/StaleDataNotice.spec.js deleted file mode 100644 index 0def6d37b5..0000000000 --- a/explorer/src/lib/components/__tests__/StaleDataNotice.spec.js +++ /dev/null @@ -1,103 +0,0 @@ -import { - afterAll, - afterEach, - beforeEach, - describe, - expect, - it, - vi, -} from "vitest"; -import { act, cleanup, render } from "@testing-library/svelte"; -import { marketDataStore } from "$lib/stores"; -import { StaleDataNotice } from "../"; - -const mockedReadableStore = await vi.hoisted(async () => { - const { mockReadableStore } = await import("$lib/dusk/test-helpers"); - return mockReadableStore({ - data: null, - error: null, - isLoading: false, - lastUpdate: null, - }); -}); - -vi.mock("$lib/stores", async (importOriginal) => { - /** @type {typeof import("$lib/stores")} */ - const original = await importOriginal(); - - return { - ...original, - marketDataStore: { - ...mockedReadableStore, - isDataStale: vi.fn(() => false), - }, - }; -}); - -describe("StaleDataNotice", () => { - const initialState = structuredClone( - mockedReadableStore.getMockedStoreValue() - ); - - beforeEach(() => { - mockedReadableStore.setMockedStoreValue(initialState); - }); - - afterEach(cleanup); - - afterAll(() => { - vi.doUnmock("$lib/stores"); - }); - - it("does not render the Stale Data notice if data is not stale", () => { - mockedReadableStore.setMockedStoreValue({ - ...initialState, - data: { data: "some data" }, - lastUpdate: new Date(), - }); - - const { container } = render(StaleDataNotice, { target: document.body }); - expect(container.childElementCount).toBe(0); - }); - - it("renders the Stale Data notice if data is stale", async () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20)); - - mockedReadableStore.setMockedStoreValue({ - ...initialState, - data: { data: "some data" }, - lastUpdate: new Date(), - }); - - vi.mocked(marketDataStore.isDataStale).mockReturnValueOnce(true); - - const { container } = render(StaleDataNotice, { target: document.body }); - - expect(container.firstChild).toMatchSnapshot(); - - vi.useRealTimers(); - }); - - it("should react to data changes", async () => { - mockedReadableStore.setMockedStoreValue({ - ...initialState, - lastUpdate: null, - }); - - const { container } = render(StaleDataNotice, { target: document.body }); - - expect(container.childElementCount).toBe(0); - - vi.mocked(marketDataStore.isDataStale).mockReturnValueOnce(true); - - await act(() => { - mockedReadableStore.setMockedStoreValue({ - ...initialState, - lastUpdate: new Date(), - }); - }); - - expect(container.firstChild).toHaveClass("dusk-icon"); - }); -}); diff --git a/explorer/src/lib/components/__tests__/Table.spec.js b/explorer/src/lib/components/__tests__/Table.spec.js deleted file mode 100644 index b3c7a98800..0000000000 --- a/explorer/src/lib/components/__tests__/Table.spec.js +++ /dev/null @@ -1,56 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { Table, TableBody, TableCell, TableHead, TableRow } from "../table"; - -describe("Table", () => { - afterEach(cleanup); - - it("renders the Table component", () => { - const { container } = render(Table); - - expect(container.querySelector(".table-container")).toBeTruthy(); - expect(container.querySelector(".table")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the TableBody component", () => { - const { container } = render(TableBody); - - expect(container.querySelector(".table__body")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the TableCell component", () => { - const { container } = render(TableCell); - - expect(container.querySelector(".table__data-cell")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the TableCell component as a head cell", () => { - const { container } = render(TableCell, { props: { type: "th" } }); - - expect(container.querySelector(".table__header-cell")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the TableHead component", () => { - const { container } = render(TableHead); - - expect(container.querySelector(".table__head")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the TableRow component", () => { - const { container } = render(TableRow); - - expect(container.querySelector(".table__row")).toBeTruthy(); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TextboxAndButton.spec.js b/explorer/src/lib/components/__tests__/TextboxAndButton.spec.js deleted file mode 100644 index 03ae6e885c..0000000000 --- a/explorer/src/lib/components/__tests__/TextboxAndButton.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { mdiMagnify } from "@mdi/js"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { TextboxAndButton } from ".."; - -describe("TextField", () => { - afterEach(cleanup); - - /** @type {import("svelte").ComponentProps} */ - const baseProps = { - className: "foo bar", - icon: { - path: mdiMagnify, - position: "after", - size: "default", - }, - placeholder: "Search", - }; - - const baseOptions = { - props: baseProps, - target: document.body, - }; - - it("renders the component with default values", async () => { - const { getByRole, container } = render(TextboxAndButton, baseOptions); - - const input = getByRole("textbox"); - const button = getByRole("button"); - - expect(input).toBeInTheDocument(); - expect(button).toBeInTheDocument(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("updates input value on change", async () => { - const { getByRole, container } = render(TextboxAndButton, baseOptions); - const input = getByRole("textbox"); - - await fireEvent.input(input, { target: { value: "test value" } }); - - expect(input).toHaveValue("test value"); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("triggers click event on button click", async () => { - const { getByRole, component } = render(TextboxAndButton, baseOptions); - const button = getByRole("button"); - - const mockClickHandler = vi.fn(); - component.$on("click", mockClickHandler); - await fireEvent.click(button); - - expect(mockClickHandler).toHaveBeenCalledOnce(); - }); - - it("focuses input on focus() call", async () => { - const { getByRole, component } = render(TextboxAndButton); - const input = getByRole("textbox"); - - component.focus(); - expect(input).toHaveFocus(); - }); - - it("should expose a method to select the element's text", () => { - const { component, getByRole } = render(TextboxAndButton, { - ...baseProps, - value: "some input text", - }); - - const input = /** @type {HTMLInputElement} */ (getByRole("textbox")); - - component.select(); - - const selectedText = input.value.substring( - Number(input.selectionStart), - Number(input.selectionEnd) - ); - - expect(selectedText).toBe("some input text"); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TransactionDetails.spec.js b/explorer/src/lib/components/__tests__/TransactionDetails.spec.js deleted file mode 100644 index a8924eda3f..0000000000 --- a/explorer/src/lib/components/__tests__/TransactionDetails.spec.js +++ /dev/null @@ -1,68 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; - -import { apiMarketData, gqlTransaction } from "$lib/mock-data"; -import { transformTransaction } from "$lib/chain-info"; - -import { TransactionDetails } from ".."; - -describe("Transaction Details", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20)); - - const baseProps = { - data: transformTransaction(gqlTransaction.tx), - error: null, - loading: false, - market: { - currentPrice: apiMarketData.market_data.current_price, - marketCap: apiMarketData.market_data.market_cap, - }, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("renders the Transaction Details component", () => { - const { container } = render(TransactionDetails, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the Transaction Details component with the memo decoded", async () => { - const { container, getAllByRole } = render(TransactionDetails, baseProps); - - await fireEvent.click(getAllByRole("switch")[0]); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the Transaction Details component with the payload visible", async () => { - const { container, getAllByRole } = render(TransactionDetails, baseProps); - - await fireEvent.click(getAllByRole("switch")[1]); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should be able to render the details when they contain blob hashes", () => { - const props = { - ...baseProps, - data: { - ...baseProps.data, - blobHashes: [ - "0261047715f0e937f3ab3d6bdfb1bf1894995f89f64ed19a26a1d59bb2d7b629", - "b3d5296139ba0f44912b87a19b47ea7f229131182405d9f082c5fbbeed8c121b", - "8f6bce4e1f233d6de022e3ac1ab3a262695991460e9f78eca288fd623083142f", - ], - }, - }; - - const { container } = render(TransactionDetails, props); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TransactionStatus.spec.js b/explorer/src/lib/components/__tests__/TransactionStatus.spec.js deleted file mode 100644 index 96d8ae028c..0000000000 --- a/explorer/src/lib/components/__tests__/TransactionStatus.spec.js +++ /dev/null @@ -1,67 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { TransactionStatus } from ".."; - -describe("TransactionStatus", () => { - const baseProps = { - errorMessage: "", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the transaction status", () => { - const { container } = render(TransactionStatus, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names to the rendered `Badge` component", () => { - const props = { - ...baseProps, - className: "foo bar", - }; - - const { container } = render(TransactionStatus, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the status as error if it receives an error message", () => { - const props = { - ...baseProps, - errorMessage: "Transaction failed", - }; - - const { container } = render(TransactionStatus, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should add tooltip info if it receives an error message and the related property is set", () => { - const props = { - ...baseProps, - errorMessage: "Transaction failed", - showErrorTooltip: true, - }; - - const { container } = render(TransactionStatus, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("shouldn't add tooltip info if there's no error message, even if the related property is set to `true`", () => { - const props = { - ...baseProps, - showErrorTooltip: true, - }; - - const { container } = render(TransactionStatus, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TransactionsCard.spec.js b/explorer/src/lib/components/__tests__/TransactionsCard.spec.js deleted file mode 100644 index be04bcca08..0000000000 --- a/explorer/src/lib/components/__tests__/TransactionsCard.spec.js +++ /dev/null @@ -1,77 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { compose, mapWith, take } from "lamb"; - -import { gqlTransactions } from "$lib/mock-data"; -import { transformTransaction } from "$lib/chain-info"; - -import { TransactionsCard } from ".."; - -describe("Transactions Card", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 30)); - - const getTenTransactions = compose(mapWith(transformTransaction), take(10)); - const data = getTenTransactions(gqlTransactions.transactions); - - const baseProps = { - error: null, - isSmallScreen: false, - loading: false, - txns: null, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should render the `TransactionsCard` component", () => { - const { container } = render(TransactionsCard, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button if the card is in the loading state", async () => { - const loading = true; - - const { container, getByRole } = render(TransactionsCard, { - ...baseOptions, - props: { ...baseProps, loading }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should disable the `Show More` button if there is no more data to display", async () => { - const loading = false; - const txns = data; - - const { container, getByRole } = render(TransactionsCard, { - ...baseOptions, - props: { ...baseProps, loading, txns }, - }); - - expect(getByRole("button", { name: "Show More" })).toBeDisabled(); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should hide the `Show More` button if an error has occurred", async () => { - const props = { ...baseProps, error: new Error("error") }; - - const { container } = render(TransactionsCard, { - ...baseOptions, - props: { ...props, error: new Error("error") }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TransactionsList.spec.js b/explorer/src/lib/components/__tests__/TransactionsList.spec.js deleted file mode 100644 index aaa2bc50fa..0000000000 --- a/explorer/src/lib/components/__tests__/TransactionsList.spec.js +++ /dev/null @@ -1,80 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { gqlTransaction } from "$lib/mock-data"; -import { transformTransaction } from "$lib/chain-info"; - -import { TransactionsList } from ".."; - -/** @param {HTMLElement} container */ -function getTimeElement(container) { - return /** @type {HTMLTimeElement} */ (container.querySelector("time")); -} - -describe("Transactions List", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20)); - - const transaction = transformTransaction(gqlTransaction.tx); - - /** @type {import("svelte").ComponentProps} */ - const baseProps = { - data: transaction, - mode: "full", - }; - - const timeRefreshInterval = 1000; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it('should render the `TransactionsList` component in "full" mode', () => { - const { container } = render(TransactionsList, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it('should render the `TransactionsList` component in "compact" mode', () => { - /** @type {import("svelte").ComponentProps} */ - const props = { - ...baseProps, - mode: "compact", - }; - const { container } = render(TransactionsList, { ...baseProps, ...props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should auto-refresh relative times when the related prop is set to true", async () => { - const props = { - ...baseProps, - data: { - ...transaction, - date: new Date(), - }, - }; - const { container, rerender } = render(TransactionsList, props); - const timeElement = getTimeElement(container); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"now"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval * 3); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"now"`); - - await rerender({ ...props, autoRefreshTime: true }); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"3 seconds ago"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"4 seconds ago"`); - - await vi.advanceTimersByTimeAsync(timeRefreshInterval); - - expect(timeElement.innerHTML).toMatchInlineSnapshot(`"5 seconds ago"`); - }); -}); diff --git a/explorer/src/lib/components/__tests__/TransactionsTable.spec.js b/explorer/src/lib/components/__tests__/TransactionsTable.spec.js deleted file mode 100644 index b26687e978..0000000000 --- a/explorer/src/lib/components/__tests__/TransactionsTable.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { mapWith, slice } from "lamb"; - -import { gqlTransactions } from "$lib/mock-data"; -import { transformTransaction } from "$lib/chain-info"; - -import { TransactionsTable } from ".."; - -describe("Transactions Table", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 30)); - - const transformTransactions = mapWith(transformTransaction); - const data = slice( - transformTransactions(gqlTransactions.transactions), - 0, - 10 - ); - - /** @type {import("svelte").ComponentProps} */ - const baseProps = { - data: data, - mode: "full", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it('should render the `TransactionsTable` component in "full" mode', () => { - const { container } = render(TransactionsTable, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it('should render the `TransactionsTable` component in "compact" mode', () => { - /** @type {import("svelte").ComponentProps} */ - const props = { ...baseProps, mode: "compact" }; - const { container } = render(TransactionsTable, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names to the rendered element", () => { - const props = { ...baseProps, className: "foo bar" }; - const { container } = render(TransactionsTable, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/WorldMap.spec.js b/explorer/src/lib/components/__tests__/WorldMap.spec.js deleted file mode 100644 index 91522ff7cf..0000000000 --- a/explorer/src/lib/components/__tests__/WorldMap.spec.js +++ /dev/null @@ -1,27 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { addCountAndUnique } from "$lib/chain-info"; -import { WorldMap } from ".."; -import { apiNodeLocations } from "$lib/mock-data"; - -describe("World Map", () => { - afterEach(cleanup); - - it("renders the WorldMap component with nodes", () => { - const props = { - nodes: addCountAndUnique(apiNodeLocations), - }; - const { container } = render(WorldMap, props); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the WorldMap component even if nodes is empty array", () => { - const props = { - nodes: [], - }; - const { container } = render(WorldMap, props); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/components/__tests__/__snapshots__/AppAnchor.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/AppAnchor.spec.js.snap deleted file mode 100644 index 9aab49960c..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/AppAnchor.spec.js.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`AppAnchor > should render an \`Anchor\` with the base path prepended to the \`href\` attribute, if the \`href\` represents an absolute URL 1`] = ` - - - some text - - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/AppAnchorButton.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/AppAnchorButton.spec.js.snap deleted file mode 100644 index 3926c70253..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/AppAnchorButton.spec.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`AppAnchorButton > should render an \`AnchorButton\` with the base path prepended to the \`href\` attribute, if the \`href\` represents an absolute URL 1`] = ` - - - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/AppImage.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/AppImage.spec.js.snap deleted file mode 100644 index 961eafd70d..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/AppImage.spec.js.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`AppImage > should render an HTML image forwarding all attributes but with the base path prepended to the \`src\` if it's an absolute URL 1`] = ` -Some alternative text -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/AppSource.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/AppSource.spec.js.snap deleted file mode 100644 index 7fad866166..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/AppSource.spec.js.snap +++ /dev/null @@ -1,21 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`AppSource > src attribute > should render a source element forwarding all attributes but with the base path prepended to the \`src\` if it's an absolute URL 1`] = ` - -`; - -exports[`AppSource > srcset attribute > should render a source element forwarding all attributes but with the base path prepended to absolute URLs in the \`srcset\` 1`] = ` - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/BlockDetails.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/BlockDetails.spec.js.snap deleted file mode 100644 index a01e258904..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/BlockDetails.spec.js.snap +++ /dev/null @@ -1,1031 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Block Details > renders the Block Details component 1`] = ` -
-
-

- Block Details -

- -
- -
-
-
-
- - - - - - height -
-
- -
- - - - - - - - - - - 495,868 - - - - - - - - - - - -
-
-
- - - - - - hash -
-
- -
- - bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f - -
- -
- -
-
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - transactions -
-
- -
- 2 -
-
-
- - - - - - block fees paid -
-
- -
- 0.000580718 - DUSK -
-
-
- - - - - - block reward -
-
- -
- 16 - DUSK -
-
-
- - - - - - block gas limit -
-
- -
- 5,000,000,000 -
-
-
- - - - - - gas used -
-
- -
- 580,718 - -
-
-
- -
-
-
- - - - - - average gas price -
-
- -
- 1 -
-
-
- - - - - - state root hash -
-
- -
- - 20bb0a677b93f084afadfd34bec3ac3feee33a020b81d9549afa2268e8543acb - -
- -
- -
-
-
-
- - - - - -
- header - - -
-
-
-
- -
- -
-
-
- - -
-`; - -exports[`Block Details > should render the Block Details component with the payload visible 1`] = ` -
-
-

- Block Details -

- -
- -
-
-
-
- - - - - - height -
-
- -
- - - - - - - - - - - 495,868 - - - - - - - - - - - -
-
-
- - - - - - hash -
-
- -
- - bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f - -
- -
- -
-
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - transactions -
-
- -
- 2 -
-
-
- - - - - - block fees paid -
-
- -
- 0.000580718 - DUSK -
-
-
- - - - - - block reward -
-
- -
- 16 - DUSK -
-
-
- - - - - - block gas limit -
-
- -
- 5,000,000,000 -
-
-
- - - - - - gas used -
-
- -
- 580,718 - -
-
-
- -
-
-
- - - - - - average gas price -
-
- -
- 1 -
-
-
- - - - - - state root hash -
-
- -
- - 20bb0a677b93f084afadfd34bec3ac3feee33a020b81d9549afa2268e8543acb - -
- -
- -
-
-
-
- - - - - -
- header - - -
-
-
-
- -
-
- -
-            {
-  "version": 1,
-  "height": 21455,
-  "timestamp": 1726246600,
-  "prev_block_hash": "940d0a9a35f30103554e9d74ae504d4a3f679bda7b925df9bff1002424a5a748",
-  "seed": "a6b11ca51a17bbe4899e3a924d2c7e087d2836800f276db9cf3e36516b4bf9a99aa8507567cbc3ab9a2c3f0390a47748",
-  "state_hash": "70a544fbea9914958dc3dba1824956a1b6de37fbfbc42d2c3e219793b8ce8017",
-  "event_hash": "02aee0f39c5936122a5ce52aacf4cf29949dd6d3eec38979ddc1bbb0b6192e34",
-  "generator_bls_pubkey": "244Sywxj7PuMHpcPxemaXLcrY5rPgztra6H9Vz8cU1Ro5v23SxKTfVqr2yS7NXAXE1iq59ndn4aMZmYxuzu3Te3e9fokQKTUkYvFxYg2P2E8EEg1gWUbs3AFL2aNx62HQd7r",
-  "txroot": "522addb8dae45b71ef281a76c86c6babef0678c8bc2d58d617dc33fa7722b021",
-  "faultroot": "0000000000000000000000000000000000000000000000000000000000000000",
-  "gas_limit": 5000000000,
-  "iteration": 0,
-  "prev_block_cert": {
-    "result": {
-      "Valid": "940d0a9a35f30103554e9d74ae504d4a3f679bda7b925df9bff1002424a5a748"
-    },
-    "validation": {
-      "bitset": 256882,
-      "aggregate_signature": "877eedaf65d9fab0b309f5f8b01df38a379612854aa6fb63009b2b3d6c92de494d79d8c612daae50e33cd3b1418a9a9e"
-    },
-    "ratification": {
-      "bitset": 386423,
-      "aggregate_signature": "a98a84b6ba9a88fde1a063538807aa35b2af1c52360bf564d9c19abd3d22ba9be9f87ce38c97b580fc05df8c920b9da4"
-    }
-  },
-  "failed_iterations": [],
-  "hash": "22c7e588560a133d1c142c2fe4c067e8b500ced43d5f9ae19cf55f1caf4dd899"
-}
-          
- -
- - -
-
-
- - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/BlocksCard.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/BlocksCard.spec.js.snap deleted file mode 100644 index 345b8a9481..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/BlocksCard.spec.js.snap +++ /dev/null @@ -1,817 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Blocks Card > should disable the \`Show More\` button if there is no more data to display 1`] = ` -
-
-

- Blocks — 10 Displayed Items -

- - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Block - - Gas - - Txn(s) - - Rewards (Dusk) -
- - 1,365,454 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,453 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,452 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,451 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,450 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,449 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,448 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,447 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,446 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,445 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
-
- -
- - -
-`; - -exports[`Blocks Card > should disable the \`Show More\` button is the card is in the loading state 1`] = ` -
-
-

- Blocks — 0 Displayed Items -

- - -
- -
-
-
- - -
-`; - -exports[`Blocks Card > should hide the \`Show More\` button if an error has occurred 1`] = ` -
-
-

- Blocks — 0 Displayed Items -

- -
- -
- - - - - -
-

- There was an error fetching the data. -

- -

- error -

-
- - -
- - -
-`; - -exports[`Blocks Card > should render the \`BlocksCard\` component 1`] = ` -
-
-

- Blocks — 0 Displayed Items -

- - -
- - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/BlocksList.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/BlocksList.spec.js.snap deleted file mode 100644 index 07910e977d..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/BlocksList.spec.js.snap +++ /dev/null @@ -1,130 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Blocks List > renders the Blocks List component 1`] = ` -
-
-
- - block -
-
- -
- - 495,868 - -
- -
-
- - relative time -
-
- -
- -
- -
-
- - average gas price -
-
- -
- 1 -
- -
-
- - gas used -
-
- -
-
-
-
-
- -
-
- - txn(s) -
-
- -
- 2 -
- -
-
- - rewards -
-
- -
- 16 - DUSK -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/BlocksTable.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/BlocksTable.spec.js.snap deleted file mode 100644 index eb616025a4..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/BlocksTable.spec.js.snap +++ /dev/null @@ -1,653 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Blocks Table > should render the \`BlocksTable\` component 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Block - - Gas - - Txn(s) - - Rewards (Dusk) -
- - 1,365,454 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,453 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,452 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,451 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,450 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,449 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,448 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,447 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,446 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
- - 1,365,445 - - - - - - AVG PRICE: - - - 0 -
- - - USED: - - - 0 -
- 0 - - 16 -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/DataAlert.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/DataAlert.spec.js.snap deleted file mode 100644 index d0e370f313..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/DataAlert.spec.js.snap +++ /dev/null @@ -1,65 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`DataAlert > should render the \`DataAlert\` in the error state 1`] = ` -
- - - - - -
-

- There was an error fetching the data. -

- -

- error -

-
- - -
-`; - -exports[`DataAlert > should render the \`DataAlert\` in the no data state 1`] = ` -
- - - - - -
-

- No data to display -

-
- -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/DataCard.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/DataCard.spec.js.snap deleted file mode 100644 index 2e870ed5cf..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/DataCard.spec.js.snap +++ /dev/null @@ -1,269 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`DataCard > should render the \`DataCard\` in the data state 1`] = ` -
-
-

- Title -

- - -
- -
- - some text - -
- - -
-`; - -exports[`DataCard > should render the \`DataCard\` in the data state when loading is true 1`] = ` -
-
-

- Title -

- - -
- -
- - some text - -
- - -
-`; - -exports[`DataCard > should render the \`DataCard\` in the error state 1`] = ` -
-
-

- Title -

- - -
- -
- - - - - -
-

- There was an error fetching the data. -

- -

- error -

-
- - -
- - -
-`; - -exports[`DataCard > should render the \`DataCard\` in the loading state 1`] = ` -
-
-

- Title -

- - -
- -
-
-
- - -
-`; - -exports[`DataCard > should render the \`DataCard\` in the no data state 1`] = ` -
-
-

- Title -

- - -
- -
- - - - - -
-

- No data to display -

-
- -
- - -
-`; - -exports[`DataCard > should render the \`DataCard\` with a disabled button 1`] = ` -
-
-

- Title -

- - -
- - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/DataGuard.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/DataGuard.spec.js.snap deleted file mode 100644 index 43b0c3f171..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/DataGuard.spec.js.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`DataGuard > should render the \`DataGuard\` if data is present 1`] = ` - - some text - -`; - -exports[`DataGuard > should render the \`DataGuard\` with the placeholder if no data is passed 1`] = ` - - - - - - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/DetailList.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/DetailList.spec.js.snap deleted file mode 100644 index 242bc71dfc..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/DetailList.spec.js.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Detail List > renders the Detail List component 1`] = ` -
- - some text - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/Footer.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/Footer.spec.js.snap deleted file mode 100644 index 06b396969f..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/Footer.spec.js.snap +++ /dev/null @@ -1,85 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Footer > renders the Footer component 1`] = ` - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/ListItem.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/ListItem.spec.js.snap deleted file mode 100644 index 1ba1b0f39d..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/ListItem.spec.js.snap +++ /dev/null @@ -1,27 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`List Item > renders the List Item component 1`] = ` -
-
- - - - - -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/Navbar.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/Navbar.spec.js.snap deleted file mode 100644 index 382e7f8320..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/Navbar.spec.js.snap +++ /dev/null @@ -1,129 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Navbar > renders the Navbar component 1`] = ` - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersCard.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersCard.spec.js.snap deleted file mode 100644 index e8cfa50b92..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersCard.spec.js.snap +++ /dev/null @@ -1,1674 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Provisioners Card > should disable the \`Show More\` button if there is no more data to display 1`] = ` -
-
-

- Provisioners — 10 Displayed Items -

- - -
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - -
- 1 - -
- m6dy2gz3jC...tW82FWtnpf - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,121 - . - - 26 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 2 - -
- m9dVuRgr3C...94r33pFQyz - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 6,923 - . - - 84 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 3 - -
- mTgXDqkyVa...gAseybAsfU - -
- -
-
-
- - Yes - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,518 - . - - 76 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 4 - -
- mUUpjnXow2...SfzQcywzaW - -
- -
-
-
- - Yes - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,653 - . - - 54 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 5 - -
- mXKJ97xTtr...JgkCK2o7x4 - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,512 - . - - 06 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 6 - -
- mdXsA3Ee1Y...K8VZPimZ2J - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,973 - . - - 12 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 7 - -
- mHGvQ9Xdjz...iTfxTvgn7f - -
- -
-
-
- - Yes - - - - Active: - - - 4,800 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 4,320 -
- - 89 - . - - 51 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 8 - -
- mUJHMDEBiT...FHNxRNhoAA - -
- -
-
-
- - Yes - - - - Active: - - - 4,800 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 23,760 -
- - 73 - . - - 80 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 9 - -
- mLx5HUo5Ph...BrRgEzoka8 - -
- -
-
-
- - No - - - - Active: - - - 1,234 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 4,320 -
- - 29 - . - - 63 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 10 - -
- mWvq9EWD9b...oU7BY2oEDe - -
- -
-
-
- - No - - - - Active: - - - 1,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 8,640 -
- - 1 - . - - 61 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
-
- -
- - -
-`; - -exports[`Provisioners Card > should disable the \`Show More\` button is the card is in the loading state 1`] = ` -
-
-

- Provisioners — 0 Displayed Items -

- - -
- -
-
-
- - -
-`; - -exports[`Provisioners Card > should hide the \`Show More\` button if an error has occurred 1`] = ` -
-
-

- Provisioners — 0 Displayed Items -

- -
- -
- - - - - -
-

- There was an error fetching the data. -

- -

- error -

-
- - -
- - -
-`; - -exports[`Provisioners Card > should render the \`ProvisionersCard\` component 1`] = ` -
-
-

- Provisioners — 0 Displayed Items -

- - -
- - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersList.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersList.spec.js.snap deleted file mode 100644 index 31f3d119b8..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersList.spec.js.snap +++ /dev/null @@ -1,200 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Provisioners List > renders the \`ProvisionersList\` component 1`] = ` -
-
-
- - Rank -
-
- -
- # - 1 -
- -
-
- - Staking address -
-
- -
- - n3qToJrMkYCnUkJkFG2a7fEVn...AmwiScS256TCMZZjmEq6aNuj6 - - -
- -
-
- -
-
- - Owner Key -
-
- -
- - No - -
- -
-
- - Active Stake -
-
- -
- 1,000,000 - DUSK -
- -
-
- - Inactive Stake -
-
- -
- 0 - DUSK -
- -
-
- - Maturity At -
-
- -
- # - 0 -
- -
-
- - accumulated reward -
-
- -
- 12,178.759788262 - DUSK -
- -
-
- - Soft Slashes -
-
- -
- 0 -
- -
-
- - Hard Slashes -
-
- -
- 0 -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersTable.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersTable.spec.js.snap deleted file mode 100644 index 00e066b773..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/ProvisionersTable.spec.js.snap +++ /dev/null @@ -1,1509 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Provisioners Table > should render the \`ProvisionersTable\` component 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - -
- 1 - -
- n3qToJrMkY...jmEq6aNuj6 - -
- -
-
-
- - No - - - - Active: - - - 1,000,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 12,178 - . - - 76 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 2 - -
- s9mQHPDuKi...XxiM4ksRbH - -
- -
-
-
- - Yes - - - - Active: - - - 510,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 6,480 -
- - 780 - . - - 15 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 3 - -
- sX4JooVNAF...fCFZMqQhtz - -
- -
-
-
- - Yes - - - - Active: - - - 505,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 38,880 -
- - 2,063 - . - - 43 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 4 - -
- scRkV9xaMC...XwXrJMpbfo - -
- -
-
-
- - No - - - - Active: - - - 504,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 15,120 -
- - 5,190 - . - - 55 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 5 - -
- m6dy2gz3jC...tW82FWtnpf - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,121 - . - - 26 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 6 - -
- m9dVuRgr3C...94r33pFQyz - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 6,923 - . - - 84 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 7 - -
- mTgXDqkyVa...gAseybAsfU - -
- -
-
-
- - Yes - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,518 - . - - 76 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 8 - -
- mUUpjnXow2...SfzQcywzaW - -
- -
-
-
- - Yes - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,653 - . - - 54 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 9 - -
- mXKJ97xTtr...JgkCK2o7x4 - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,512 - . - - 06 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
- 10 - -
- mdXsA3Ee1Y...K8VZPimZ2J - -
- -
-
-
- - No - - - - Active: - - - 500,000 - -
- - - Inactive: - - - 0 - -
- - - Maturity At: - - - # - 0 -
- - 7,973 - . - - 12 - - - - - Soft: - - - 0 - -
- - - Hard: - - - 0 -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/Rerender.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/Rerender.spec.js.snap deleted file mode 100644 index 1712649963..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/Rerender.spec.js.snap +++ /dev/null @@ -1,7 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`updates the slot content every second > should render with slot data 1`] = ` - - some text - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/SearchNotification.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/SearchNotification.spec.js.snap deleted file mode 100644 index 94b35ba7d6..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/SearchNotification.spec.js.snap +++ /dev/null @@ -1,90 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Search Notification > renders the Search Notification component with a Error message 1`] = ` -
-
- - The search string you entered is: - - some query text - - - - -
- - - HTTP Request failed - failed - - - -
-`; - -exports[`Search Notification > renders the Search Notification component with the query string 1`] = ` -
-
- - The search string you entered is: - - some query text - - - - -
- - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/StaleDataNotice.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/StaleDataNotice.spec.js.snap deleted file mode 100644 index 0688a1f332..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/StaleDataNotice.spec.js.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`StaleDataNotice > renders the Stale Data notice if data is stale 1`] = ` - - - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/Table.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/Table.spec.js.snap deleted file mode 100644 index 6a95e224cc..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/Table.spec.js.snap +++ /dev/null @@ -1,41 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Table > renders the Table component 1`] = ` -
- - -`; - -exports[`Table > renders the TableBody component 1`] = ` - -`; - -exports[`Table > renders the TableCell component 1`] = ` - -`; - -exports[`Table > renders the TableRow component 1`] = ` - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TextboxAndButton.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TextboxAndButton.spec.js.snap deleted file mode 100644 index c5bbd83f97..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TextboxAndButton.spec.js.snap +++ /dev/null @@ -1,65 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`TextField > renders the component with default values 1`] = ` -
- - - - -
-`; - -exports[`TextField > updates input value on change 1`] = ` -
- - - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TransactionDetails.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TransactionDetails.spec.js.snap deleted file mode 100644 index 43b9f65141..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TransactionDetails.spec.js.snap +++ /dev/null @@ -1,2794 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Transaction Details > renders the Transaction Details component 1`] = ` -
-
-

- Transaction Details -

- -
- -
-
-
-
- - - - - - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
- -
-
-
- - - - - - block height -
-
- -
- - 487,166 - -
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - from -
-
- -
- - kT5BamV2Xq6JpnoCq9ux7EmYR...HdCeKtzExREcXZsmmMRLwKbXj - - -
- -
- -
- -
-
- - - - - - to -
-
- -
- - mHWZo9qYUhqp2SEmtWN7EuDKF...GQZwCaeCS8uA63ZPKnGpjiUnj - - -
- -
- -
- -
-
- - - - - - amount -
-
- -
- 9,812.378912731 DUSK ($3,614.3897725045) - - - -
- -
-
- - - - - - type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-
- - - - - - status -
-
- -
- - success - -
-
-
- - - - - - transaction fee -
-
- -
- 0.000290766 DUSK ($0.0001071037) - - - - -
-
-
- - - - - - gas price -
-
- -
- 0.000000001 DUSK ($0.0000000004) - - - - -
-
-
- - - - - - transaction gas limit -
-
- -
- 500000000 -
-
-
- - - - - - gas spent -
-
- -
- 290766 -
-
-
- - - - - - nonce -
-
- -
- 156 -
- -
-
- - - - - -
- memo - -
-
- -
-
- -
- some notes about the transaction - - -
-
-
- - - - - -
- payload - -
-
- -
-
- -
- -
-
-
- - -
-`; - -exports[`Transaction Details > renders the Transaction Details component with the memo decoded 1`] = ` -
-
-

- Transaction Details -

- -
- -
-
-
-
- - - - - - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
- -
-
-
- - - - - - block height -
-
- -
- - 487,166 - -
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - from -
-
- -
- - kT5BamV2Xq6JpnoCq9ux7EmYR...HdCeKtzExREcXZsmmMRLwKbXj - - -
- -
- -
- -
-
- - - - - - to -
-
- -
- - mHWZo9qYUhqp2SEmtWN7EuDKF...GQZwCaeCS8uA63ZPKnGpjiUnj - - -
- -
- -
- -
-
- - - - - - amount -
-
- -
- 9,812.378912731 DUSK ($3,614.3897725045) - - - -
- -
-
- - - - - - type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-
- - - - - - status -
-
- -
- - success - -
-
-
- - - - - - transaction fee -
-
- -
- 0.000290766 DUSK ($0.0001071037) - - - - -
-
-
- - - - - - gas price -
-
- -
- 0.000000001 DUSK ($0.0000000004) - - - - -
-
-
- - - - - - transaction gas limit -
-
- -
- 500000000 -
-
-
- - - - - - gas spent -
-
- -
- 290766 -
-
-
- - - - - - nonce -
-
- -
- 156 -
- -
-
- - - - - -
- memo - -
-
- -
-
- -
-
- -
-            some notes about the transaction
-          
- -
- - -
-
-
- - - - - -
- payload - -
-
- -
-
- -
- -
-
-
- - -
-`; - -exports[`Transaction Details > renders the Transaction Details component with the payload visible 1`] = ` -
-
-

- Transaction Details -

- -
- -
-
-
-
- - - - - - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
- -
-
-
- - - - - - block height -
-
- -
- - 487,166 - -
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - from -
-
- -
- - kT5BamV2Xq6JpnoCq9ux7EmYR...HdCeKtzExREcXZsmmMRLwKbXj - - -
- -
- -
- -
-
- - - - - - to -
-
- -
- - mHWZo9qYUhqp2SEmtWN7EuDKF...GQZwCaeCS8uA63ZPKnGpjiUnj - - -
- -
- -
- -
-
- - - - - - amount -
-
- -
- 9,812.378912731 DUSK ($3,614.3897725045) - - - -
- -
-
- - - - - - type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-
- - - - - - status -
-
- -
- - success - -
-
-
- - - - - - transaction fee -
-
- -
- 0.000290766 DUSK ($0.0001071037) - - - - -
-
-
- - - - - - gas price -
-
- -
- 0.000000001 DUSK ($0.0000000004) - - - - -
-
-
- - - - - - transaction gas limit -
-
- -
- 500000000 -
-
-
- - - - - - gas spent -
-
- -
- 290766 -
-
-
- - - - - - nonce -
-
- -
- 156 -
- -
-
- - - - - -
- memo - -
-
- -
-
- -
- some notes about the transaction - - -
-
-
- - - - - -
- payload - -
-
- -
-
- -
-
- -
-            {
-  "type": "moonlight",
-  "sender": "kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj",
-  "receiver": "mHWZo9qYUhqp2SEmtWN7EuDKFwVrjgdEyzpHdfLB6R9scRAq5EkUQyLB9fBfCGt1wjxfEpFxHq9MBPVVPY3Lk3JKnQLWZzj7UYAR4mGmeGQZwCaeCS8uA63ZPKnGpjiUnj",
-  "value": 9812378912731,
-  "nonce": 156,
-  "deposit": 0,
-  "fee": {
-    "refund_address": "kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj",
-    "gas_limit": "2500000",
-    "gas_price": "1"
-  },
-  "call": null,
-  "is_deploy": false,
-  "memo": null
-}
-          
- -
- - -
-
-
- - -
-`; - -exports[`Transaction Details > should be able to render the details when they contain blob hashes 1`] = ` -
-
-

- Transaction Details -

- -
- -
-
-
-
- - - - - - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
- -
-
-
- - - - - - block height -
-
- -
- - 487,166 - -
-
-
- - - - - - timestamp -
-
- -
- -
-
-
- - - - - - from -
-
- -
- - kT5BamV2Xq6JpnoCq9ux7EmYR...HdCeKtzExREcXZsmmMRLwKbXj - - -
- -
- -
- -
-
- - - - - - to -
-
- -
- - mHWZo9qYUhqp2SEmtWN7EuDKF...GQZwCaeCS8uA63ZPKnGpjiUnj - - -
- -
- -
- -
-
- - - - - - amount -
-
- -
- 9,812.378912731 DUSK ($3,614.3897725045) - - - -
- -
-
- - - - - - type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-
- - - - - - status -
-
- -
- - success - -
-
-
- - - - - - transaction fee -
-
- -
- 0.000290766 DUSK ($0.0001071037) - - - - -
-
-
- - - - - - gas price -
-
- -
- 0.000000001 DUSK ($0.0000000004) - - - - -
-
-
- - - - - - transaction gas limit -
-
- -
- 500000000 -
-
-
- - - - - - gas spent -
-
- -
- 290766 -
-
-
- - - - - - nonce -
-
- -
- 156 -
- -
-
- - - - - -
- memo - -
-
- -
-
- -
- some notes about the transaction - - -
-
-
- - - - - -
- payload - -
-
- -
-
- -
- -
-
-
- - - - - - Blob hashes -
-
- -
-
    -
  • -
    -              0261047715f0e937f3ab3d6bd...9f64ed19a26a1d59bb2d7b629
    -            
    - -
    - -
    - -
  • -
  • -
    -              b3d5296139ba0f44912b87a19...82405d9f082c5fbbeed8c121b
    -            
    - -
    - -
    - -
  • -
  • -
    -              8f6bce4e1f233d6de022e3ac1...60e9f78eca288fd623083142f
    -            
    - -
    - -
    - -
  • -
-
-
-
- - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TransactionStatus.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TransactionStatus.spec.js.snap deleted file mode 100644 index c81eb3c61a..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TransactionStatus.spec.js.snap +++ /dev/null @@ -1,44 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`TransactionStatus > should add tooltip info if it receives an error message and the related property is set 1`] = ` - - failed - -`; - -exports[`TransactionStatus > should pass additional class names to the rendered \`Badge\` component 1`] = ` - - success - -`; - -exports[`TransactionStatus > should render the status as error if it receives an error message 1`] = ` - - failed - -`; - -exports[`TransactionStatus > should render the transaction status 1`] = ` - - success - -`; - -exports[`TransactionStatus > shouldn't add tooltip info if there's no error message, even if the related property is set to \`true\` 1`] = ` - - success - -`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsCard.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TransactionsCard.spec.js.snap deleted file mode 100644 index 8f6b339f04..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsCard.spec.js.snap +++ /dev/null @@ -1,1474 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Transactions Card > should disable the \`Show More\` button if the card is in the loading state 1`] = ` -
-
-

- Transactions — 0 Displayed Items -

- - -
- -
-
-
- - -
-`; - -exports[`Transactions Card > should disable the \`Show More\` button if there is no more data to display 1`] = ` -
-
-

- Transactions — 10 Displayed Items -

- - -
- -
-
-
-`; - -exports[`Table > renders the TableCell component as a head cell 1`] = ` - -`; - -exports[`Table > renders the TableHead component 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - Gas - - Fee (DUSK) - - Status - - Type -
-
- - 4a4593a447...3047514552 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - blob - - -
-
-
- - 47ae464b9c...3e5facba66 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 225dae3745...176b36ea41 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008220846 - - - success - - -
- - - - - - - blob - - -
-
-
- - 03bae6e2e9...b3849de702 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221266 - - - success - - -
- - - - - - - transfer - - -
-
-
- - ed17ab505a...03a2b96964 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220422 - - - success - - -
- - - - - - - transfer - - -
-
-
- - cbac233a76...1f4b53666c - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220926 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a9abf02f54...2314152b5d - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221243 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a717154264...0084798b6f - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220934 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a171e5d05b...4776765465 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220989 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 8fff9d4eb4...393ee0ac57 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221018 - - - success - - -
- - - - - - - transfer - - -
-
-
- -
- - -
-`; - -exports[`Transactions Card > should hide the \`Show More\` button if an error has occurred 1`] = ` -
-
-

- Transactions — 0 Displayed Items -

- -
- -
- - - - - -
-

- There was an error fetching the data. -

- -

- error -

-
- - -
- - -
-`; - -exports[`Transactions Card > should render the \`TransactionsCard\` component 1`] = ` -
-
-

- Transactions — 0 Displayed Items -

- - -
- - - -
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsList.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TransactionsList.spec.js.snap deleted file mode 100644 index 28d2b59b0d..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsList.spec.js.snap +++ /dev/null @@ -1,352 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Transactions List > should render the \`TransactionsList\` component in "compact" mode 1`] = ` -
-
-
- - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
-
- -
-
- - relative time -
-
- -
- -
- - -
-
- - Fee -
-
- -
- 0.000290766 - DUSK -
- -
-
- - Status -
-
- -
- - success - -
- -
-
- - Type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-`; - -exports[`Transactions List > should render the \`TransactionsList\` component in "full" mode 1`] = ` -
-
-
- - ID -
-
- -
- - 4877687c2dbf154248d3ddee9...056f82a46819da041d4ac0e04 - - -
- -
-
- -
-
- - relative time -
-
- -
- -
- -
-
- - Gas Price -
-
- -
- 1 -
- -
-
- - Gas Limit -
-
- -
- 500,000,000 -
- -
-
- - Fee -
-
- -
- 0.000290766 - DUSK -
- -
-
- - Status -
-
- -
- - success - -
- -
-
- - Type -
-
- -
-
- - - - - - - transfer - - -
- -
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsTable.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/TransactionsTable.spec.js.snap deleted file mode 100644 index 328332368a..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/TransactionsTable.spec.js.snap +++ /dev/null @@ -1,3712 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Transactions Table > should pass additional class names to the rendered element 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - Gas - - Fee (DUSK) - - Status - - Type -
-
- - 4a4593a447...3047514552 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - blob - - -
-
-
- - 47ae464b9c...3e5facba66 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 225dae3745...176b36ea41 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008220846 - - - success - - -
- - - - - - - blob - - -
-
-
- - 03bae6e2e9...b3849de702 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221266 - - - success - - -
- - - - - - - transfer - - -
-
-
- - ed17ab505a...03a2b96964 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220422 - - - success - - -
- - - - - - - transfer - - -
-
-
- - cbac233a76...1f4b53666c - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220926 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a9abf02f54...2314152b5d - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221243 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a717154264...0084798b6f - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220934 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a171e5d05b...4776765465 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220989 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 8fff9d4eb4...393ee0ac57 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221018 - - - success - - -
- - - - - - - transfer - - -
-
-
-`; - -exports[`Transactions Table > should render the \`TransactionsTable\` component in "compact" mode 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - Fee (DUSK) - - Status - - Type -
-
- - 4a4593a447...3047514552 - - -
- -
-
- - -
- 0.008221117 - - - success - - -
- - - - - - - blob - - -
-
-
- - 47ae464b9c...3e5facba66 - - -
- -
-
- - -
- 0.008221117 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 225dae3745...176b36ea41 - - -
- -
-
- - -
- 0.008220846 - - - success - - -
- - - - - - - blob - - -
-
-
- - 03bae6e2e9...b3849de702 - - -
- -
-
- - -
- 0.008221266 - - - success - - -
- - - - - - - transfer - - -
-
-
- - ed17ab505a...03a2b96964 - - -
- -
-
- - -
- 0.008220422 - - - success - - -
- - - - - - - transfer - - -
-
-
- - cbac233a76...1f4b53666c - - -
- -
-
- - -
- 0.008220926 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a9abf02f54...2314152b5d - - -
- -
-
- - -
- 0.008221243 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a717154264...0084798b6f - - -
- -
-
- - -
- 0.008220934 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a171e5d05b...4776765465 - - -
- -
-
- - -
- 0.008220989 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 8fff9d4eb4...393ee0ac57 - - -
- -
-
- - -
- 0.008221018 - - - success - - -
- - - - - - - transfer - - -
-
-
-`; - -exports[`Transactions Table > should render the \`TransactionsTable\` component in "full" mode 1`] = ` -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - Gas - - Fee (DUSK) - - Status - - Type -
-
- - 4a4593a447...3047514552 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - blob - - -
-
-
- - 47ae464b9c...3e5facba66 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008221117 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 225dae3745...176b36ea41 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 50,000,000 -
- 0.008220846 - - - success - - -
- - - - - - - blob - - -
-
-
- - 03bae6e2e9...b3849de702 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221266 - - - success - - -
- - - - - - - transfer - - -
-
-
- - ed17ab505a...03a2b96964 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220422 - - - success - - -
- - - - - - - transfer - - -
-
-
- - cbac233a76...1f4b53666c - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220926 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a9abf02f54...2314152b5d - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221243 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a717154264...0084798b6f - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220934 - - - success - - -
- - - - - - - transfer - - -
-
-
- - a171e5d05b...4776765465 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008220989 - - - success - - -
- - - - - - - transfer - - -
-
-
- - 8fff9d4eb4...393ee0ac57 - - -
- -
-
- - -
- - PRICE: - - - 1 -
- - - LIMIT: - - - 500,000,000 -
- 0.008221018 - - - success - - -
- - - - - - - transfer - - -
-
-
-`; diff --git a/explorer/src/lib/components/__tests__/__snapshots__/WorldMap.spec.js.snap b/explorer/src/lib/components/__tests__/__snapshots__/WorldMap.spec.js.snap deleted file mode 100644 index 691646ab84..0000000000 --- a/explorer/src/lib/components/__tests__/__snapshots__/WorldMap.spec.js.snap +++ /dev/null @@ -1,1672 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`World Map > renders the WorldMap component even if nodes is empty array 1`] = ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`; - -exports[`World Map > renders the WorldMap component with nodes 1`] = ` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -`; diff --git a/explorer/src/lib/components/account-overview/AccountOverview.css b/explorer/src/lib/components/account-overview/AccountOverview.css deleted file mode 100644 index f6c2e169ac..0000000000 --- a/explorer/src/lib/components/account-overview/AccountOverview.css +++ /dev/null @@ -1,38 +0,0 @@ -.account-overview-panel { - display: flex; - padding: 1rem 1.375rem; - flex-direction: column; - row-gap: 0.625rem; - border-radius: 1.5rem; - background-color: var(--surface-color); - width: 100%; - text-transform: uppercase; - position: relative; - margin-bottom: 1.25rem; -} - -.account-overview-panel__header { - display: flex; - align-items: center; - gap: 0.5rem; - height: 3.9375rem; - font-size: 1.125rem; -} - -.account-overview-panel__address { - font-weight: 500; - font-family: var(--mono-font-family); -} - -.account-overview-panel__separator { - border: none; - border-top: 1px solid var(--taupe-grey); -} - -.account-overview-panel__details { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 1rem; - min-height: 3.9375rem; - align-items: center; -} diff --git a/explorer/src/lib/components/account-overview/AccountOverview.svelte b/explorer/src/lib/components/account-overview/AccountOverview.svelte deleted file mode 100644 index c7f7cae026..0000000000 --- a/explorer/src/lib/components/account-overview/AccountOverview.svelte +++ /dev/null @@ -1,105 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/app-anchor-button/AppAnchorButton.svelte b/explorer/src/lib/components/app-anchor-button/AppAnchorButton.svelte deleted file mode 100644 index 72800f2284..0000000000 --- a/explorer/src/lib/components/app-anchor-button/AppAnchorButton.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/app-anchor/AppAnchor.svelte b/explorer/src/lib/components/app-anchor/AppAnchor.svelte deleted file mode 100644 index 66e2bd8055..0000000000 --- a/explorer/src/lib/components/app-anchor/AppAnchor.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - diff --git a/explorer/src/lib/components/app-image/AppImage.svelte b/explorer/src/lib/components/app-image/AppImage.svelte deleted file mode 100644 index bcd2845199..0000000000 --- a/explorer/src/lib/components/app-image/AppImage.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/app-source/AppSource.svelte b/explorer/src/lib/components/app-source/AppSource.svelte deleted file mode 100644 index d7901ac5af..0000000000 --- a/explorer/src/lib/components/app-source/AppSource.svelte +++ /dev/null @@ -1,25 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/block-details/BlockDetails.css b/explorer/src/lib/components/block-details/BlockDetails.css deleted file mode 100644 index 73be06c22e..0000000000 --- a/explorer/src/lib/components/block-details/BlockDetails.css +++ /dev/null @@ -1,82 +0,0 @@ -.block-details__list { - display: grid; - grid-template-columns: minmax(0, 1fr); - font-size: 0.875rem; - column-gap: 1.875rem; - padding: 0 1.125rem; -} - -.block-details__list-anchor { - display: flex; -} - -.block-details__gas-used.dusk-progress-bar { - width: 12.5rem; -} - -.block-details__hash { - font-family: var(--mono-font-family); - display: flex; - gap: 0.625rem; - align-items: center; -} - -.block-details__payload { - margin-top: 0.625rem; - padding: 0.625rem 0.875rem; - line-height: 1.3125rem; - width: 100%; - overflow-x: auto; -} - -.block-details__payload-switch { - position: absolute; - right: -3.8125rem; -} - -.block-details__switch-wrapper { - display: flex; - align-items: center; - flex: 1 100%; - justify-content: space-between; -} - -.block-details__list .details-list__term:last-of-type { - align-items: start; - margin-bottom: 0.625rem; - /* - 3.8125rem is the sum of the switch width plus the gap - between the switch and the dt element - */ - width: calc(100% - 3.8125rem); -} - -@media (min-width: 640px) { - .block-details__header-heading { - text-transform: none; - } - - .block-details__list { - display: inline-grid; - grid-template-columns: minmax(0, auto) minmax(0, 3fr); - } - - .block-details__state-hash { - padding-top: 0rem; - } - - .block-details__payload { - margin-top: 0rem; - } - - .block-details__payload-switch { - position: relative; - right: 0rem; - } - - .block-details__list .details-list__term:last-of-type { - align-items: start; - margin-bottom: 0; - width: 100%; - } -} diff --git a/explorer/src/lib/components/block-details/BlockDetails.svelte b/explorer/src/lib/components/block-details/BlockDetails.svelte deleted file mode 100644 index d128f82c06..0000000000 --- a/explorer/src/lib/components/block-details/BlockDetails.svelte +++ /dev/null @@ -1,219 +0,0 @@ - - - - - -
- - - height - - - {formatter(data.header.height)} - - - - - - - hash - {middleEllipsis( - data.header.hash, - calculateAdaptiveCharCount(screenWidth, 320, 1920, 14, 66) - )} - - - - - - - timestamp - {`${data.header.date.toUTCString()} (${relativeTime})`} - - - - - transactions - {formatter(data.transactions.data.length)} - - - - - block fees paid - {formatter(luxToDusk(data.header.feespaid))} DUSK - - - - - block reward - {formatter(luxToDusk(data.header.reward))} DUSK - - - - - block gas limit - {formatter(data.transactions.stats.gasLimit)} - - - - - gas used - - {formatter(data.transactions.stats.gasUsed)} - - - - - - - - average gas price - {formatter(data.transactions.stats.averageGasPrice)} - - - - - state root hash - {middleEllipsis( - data.header.statehash, - calculateAdaptiveCharCount(screenWidth, 320, 1920, 14, 66) - )} - - - - - - - -
- header - - -
-
- - - {#if isPayloadToggled} - -
{payload
-                ? JSON.stringify(JSON.parse(payload), null, 2)
-                : "---"}
-
- {/if} -
-
-
-
diff --git a/explorer/src/lib/components/blocks-card/BlocksCard.svelte b/explorer/src/lib/components/blocks-card/BlocksCard.svelte deleted file mode 100644 index 633fdd454d..0000000000 --- a/explorer/src/lib/components/blocks-card/BlocksCard.svelte +++ /dev/null @@ -1,59 +0,0 @@ - - - - - loadMoreItems(), - disabled: isLoadMoreDisabled, - label: "Show More", - }} -> - {#if isSmallScreen} -
- {#each displayedBlocks as block (block)} - - {/each} -
- {:else} - - {/if} -
diff --git a/explorer/src/lib/components/blocks-list/BlocksList.css b/explorer/src/lib/components/blocks-list/BlocksList.css deleted file mode 100644 index 51ca382cdb..0000000000 --- a/explorer/src/lib/components/blocks-list/BlocksList.css +++ /dev/null @@ -1,3 +0,0 @@ -.dusk-progress-bar.blocks-list__gas-used { - width: 60%; -} diff --git a/explorer/src/lib/components/blocks-list/BlocksList.svelte b/explorer/src/lib/components/blocks-list/BlocksList.svelte deleted file mode 100644 index e09f9d1a67..0000000000 --- a/explorer/src/lib/components/blocks-list/BlocksList.svelte +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - block - {formatter(data.header.height)} - - - - - relative time - - - - - - average gas price - - {formatter(data.transactions.stats.averageGasPrice)} - - - - - - gas used - - - - - - - - txn(s) - - {formatter(data.transactions.data.length)} - - - - - - rewards - - {formatter(luxToDusk(data.header.reward))} DUSK - - - diff --git a/explorer/src/lib/components/blocks-table/BlocksTable.css b/explorer/src/lib/components/blocks-table/BlocksTable.css deleted file mode 100644 index f7dadede1e..0000000000 --- a/explorer/src/lib/components/blocks-table/BlocksTable.css +++ /dev/null @@ -1,11 +0,0 @@ -.block__fee-avg-label, -.block__fee-total-label { - font-weight: 500; -} - -.block__time { - display: block; - font-size: 0.75rem; - color: var(--color-text-secondary); - margin-top: 0.2rem; -} diff --git a/explorer/src/lib/components/blocks-table/BlocksTable.svelte b/explorer/src/lib/components/blocks-table/BlocksTable.svelte deleted file mode 100644 index 2983e097cd..0000000000 --- a/explorer/src/lib/components/blocks-table/BlocksTable.svelte +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - Block - Gas - Txn(s) - Rewards (Dusk) - - - - {#each data as block (block)} - - - {numberFormatter(block.header.height)} - - - - AVG PRICE: - {numberFormatter(block.transactions.stats.averageGasPrice)}
- USED: - {numberFormatter(block.transactions.stats.gasUsed)} -
- {numberFormatter(block.transactions.data.length)} - {numberFormatter(luxToDusk(block.header.reward))} -
- {/each} -
-
diff --git a/explorer/src/lib/components/data-alert/DataAlert.css b/explorer/src/lib/components/data-alert/DataAlert.css deleted file mode 100644 index 1524d45fea..0000000000 --- a/explorer/src/lib/components/data-alert/DataAlert.css +++ /dev/null @@ -1,13 +0,0 @@ -.alert { - display: flex; - flex-direction: column; - width: 100%; - min-height: 400px; - justify-content: center; - align-items: center; - gap: 0.625rem; -} - -.alert__error-message { - text-align: center; -} diff --git a/explorer/src/lib/components/data-alert/DataAlert.svelte b/explorer/src/lib/components/data-alert/DataAlert.svelte deleted file mode 100644 index 546c7d31e7..0000000000 --- a/explorer/src/lib/components/data-alert/DataAlert.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - -
- -
- {#if error} -

There was an error fetching the data.

-

{error.message ?? ""}

- {:else} -

No data to display

- {/if} -
- {#if error} -
diff --git a/explorer/src/lib/components/data-card/DataCard.css b/explorer/src/lib/components/data-card/DataCard.css deleted file mode 100644 index 468f582564..0000000000 --- a/explorer/src/lib/components/data-card/DataCard.css +++ /dev/null @@ -1,44 +0,0 @@ -.data-card { - --header-lateral-padding: 1.125rem; - --card-padding: 1rem; - padding: var(--card-padding) 0 0; -} - -.data-card__loading-notice { - padding: 0 1.125rem; -} - -.data-card__header { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - align-items: center; - gap: 0.625rem; - padding: 0 var(--header-lateral-padding) 1rem; -} - -.data-card__header-title { - font-weight: 500; - font-size: 1.125rem; - line-height: 32.2px; -} - -.data-card__content { - padding-bottom: var(--card-padding); -} - -.data-card__progress-bar.dusk-progress-bar { - background-color: transparent; - height: 0.125rem; - width: calc(100% - calc(2 * var(--header-lateral-padding))); - margin: 0 auto; -} - -.data-card__progress-bar .dusk-progress-bar__filler { - background-color: var(--primary-color); -} - -.data-card__table, -.data-card__list { - overflow-y: auto; -} diff --git a/explorer/src/lib/components/data-card/DataCard.svelte b/explorer/src/lib/components/data-card/DataCard.svelte deleted file mode 100644 index 129b736e3b..0000000000 --- a/explorer/src/lib/components/data-card/DataCard.svelte +++ /dev/null @@ -1,53 +0,0 @@ - - - - - -
-

{title}

- {#if headerButtonDetails} -
- {#if loading && !data} - - {:else if error || hasEmptyData} - - {:else if data} -
- -
- {/if} -
diff --git a/explorer/src/lib/components/data-guard/DataGuard.svelte b/explorer/src/lib/components/data-guard/DataGuard.svelte deleted file mode 100644 index fe59ecb7dd..0000000000 --- a/explorer/src/lib/components/data-guard/DataGuard.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -{#if data || data === 0} - -{:else} - - - - -{/if} diff --git a/explorer/src/lib/components/detail-list/DetailList.css b/explorer/src/lib/components/detail-list/DetailList.css deleted file mode 100644 index 6f42142f00..0000000000 --- a/explorer/src/lib/components/detail-list/DetailList.css +++ /dev/null @@ -1,8 +0,0 @@ -.detail-list { - display: grid; - grid-template-columns: 1fr 1fr; - font-size: 0.75rem; - column-gap: 1.125rem; - padding-bottom: 0.625rem; - align-items: baseline; -} diff --git a/explorer/src/lib/components/detail-list/DetailList.svelte b/explorer/src/lib/components/detail-list/DetailList.svelte deleted file mode 100644 index bdf9714586..0000000000 --- a/explorer/src/lib/components/detail-list/DetailList.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - -
- -
diff --git a/explorer/src/lib/components/footer/Footer.css b/explorer/src/lib/components/footer/Footer.css deleted file mode 100644 index 332e9f2206..0000000000 --- a/explorer/src/lib/components/footer/Footer.css +++ /dev/null @@ -1,63 +0,0 @@ -.footer { - padding-block: 1.25rem; - font-size: 0.875rem; - display: grid; - gap: 1.25em; -} - -.footer__copyright-container { - display: flex; - flex-direction: column; - gap: 0.625em; -} - -.footer__explorers-links-container, -.footer__misc-links-container { - display: flex; - flex-direction: row; - gap: var(--default-gap); -} - -.footer__misc-links-container { - margin-bottom: 1.25em; -} - -.footer__link, -.footer__link:visited { - text-decoration: underline; - color: var(--primary-color); -} - -.footer__link:hover { - color: var(--secondary-color); -} - -@media (min-width: 900px) { - .footer { - grid-template-columns: 1fr auto auto auto; - gap: 2.5em; - } - - .footer__copyright-container { - grid-area: 1 / 1 / 2 / 1; - } - - .footer__explorers-links-container { - grid-area: 1 / 2 / 2 / 2; - } - - .footer__misc-links-container { - grid-area: 1 / 3 / 2 / 3; - margin-bottom: 0; - } - - .footer__logo { - grid-area: 1 / 4 / 1 / 5; - } - - .footer__explorers-links-container, - .footer__misc-links-container { - display: flex; - flex-direction: column; - } -} diff --git a/explorer/src/lib/components/footer/Footer.svelte b/explorer/src/lib/components/footer/Footer.svelte deleted file mode 100644 index 172a071519..0000000000 --- a/explorer/src/lib/components/footer/Footer.svelte +++ /dev/null @@ -1,68 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/index.js b/explorer/src/lib/components/index.js deleted file mode 100644 index 87a0ebecd4..0000000000 --- a/explorer/src/lib/components/index.js +++ /dev/null @@ -1,37 +0,0 @@ -export { default as AccountOverview } from "./account-overview/AccountOverview.svelte"; -export { default as AppAnchor } from "./app-anchor/AppAnchor.svelte"; -export { default as AppAnchorButton } from "./app-anchor-button/AppAnchorButton.svelte"; -export { default as AppImage } from "./app-image/AppImage.svelte"; -export { default as AppSource } from "./app-source/AppSource.svelte"; -export { default as BlockDetails } from "./block-details/BlockDetails.svelte"; -export { default as BlocksCard } from "./blocks-card/BlocksCard.svelte"; -export { default as BlocksList } from "./blocks-list/BlocksList.svelte"; -export { default as BlocksTable } from "./blocks-table/BlocksTable.svelte"; -export { default as DataAlert } from "./data-alert/DataAlert.svelte"; -export { default as DataCard } from "./data-card/DataCard.svelte"; -export { default as DataGuard } from "./data-guard/DataGuard.svelte"; -export { default as DetailList } from "./detail-list/DetailList.svelte"; -export { default as Footer } from "./footer/Footer.svelte"; -export { default as LatestBlocksCard } from "./latest-blocks-card/LatestBlocksCard.svelte"; -export { default as LatestTransactionsCard } from "./latest-transactions-card/LatestTransactionsCard.svelte"; -export { default as ListItem } from "./list-item/ListItem.svelte"; -export { default as Navbar } from "./navbar/Navbar.svelte"; -export { default as ProvisionersCard } from "./provisioners-card/ProvisionersCard.svelte"; -export { default as ProvisionersList } from "./provisioners-list/ProvisionersList.svelte"; -export { default as ProvisionersTable } from "./provisioners-table/ProvisionersTable.svelte"; -export { default as SearchNotification } from "./search-notification/SearchNotification.svelte"; -export { default as StaleDataNotice } from "./stale-data-notice/StaleDataNotice.svelte"; -export { default as TextboxAndButton } from "./textbox-and-button/TextboxAndButton.svelte"; -export { default as TransactionsCard } from "./transactions-card/TransactionsCard.svelte"; -export { default as TransactionDetails } from "./transaction-details/TransactionDetails.svelte"; -export { default as TransactionsList } from "./transactions-list/TransactionsList.svelte"; -export { default as TransactionsTable } from "./transactions-table/TransactionsTable.svelte"; -export { default as TokensTable } from "./tokens-table/TokensTable.svelte"; -export { default as TokenOverview } from "./token-overview/TokenOverview.svelte"; -export { default as OverviewPanelDetailsItem } from "./overview-panel-details-item/OverviewPanelDetailsItem.svelte"; -export { default as TokenDetailsTable } from "./token-details-table/TokenDetailsTable.svelte"; -export { default as TokenListDetails } from "./token-list-details/TokenListDetails.svelte"; -export { default as TokenTransactionsList } from "./token-transactions-list/TokenTransactionsList.svelte"; -export { default as TransactionType } from "./transaction-type/TransactionType.svelte"; -export { default as TransactionStatus } from "./transaction-status/TransactionStatus.svelte"; -export { default as WorldMap } from "./world-map/WorldMap.svelte"; diff --git a/explorer/src/lib/components/latest-blocks-card/LatestBlocksCard.svelte b/explorer/src/lib/components/latest-blocks-card/LatestBlocksCard.svelte deleted file mode 100644 index 2d9256d412..0000000000 --- a/explorer/src/lib/components/latest-blocks-card/LatestBlocksCard.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - - - - goto("/blocks"), - disabled: false, - label: "All Blocks", - }} -> - {#if isSmallScreen} - {#each blocks as block (block)} - - {/each} - {:else} - - {/if} - - - diff --git a/explorer/src/lib/components/latest-transactions-card/LatestTransactionsCard.svelte b/explorer/src/lib/components/latest-transactions-card/LatestTransactionsCard.svelte deleted file mode 100644 index 1fe7ee6ddc..0000000000 --- a/explorer/src/lib/components/latest-transactions-card/LatestTransactionsCard.svelte +++ /dev/null @@ -1,74 +0,0 @@ - - - - - goto("/transactions"), - disabled: false, - label: "All Transactions", - } - : undefined} -> - {#if isSmallScreen} - {#each txns as txn (txn)} - - {/each} - {:else} - - {/if} - - - diff --git a/explorer/src/lib/components/list-item/ListItem.css b/explorer/src/lib/components/list-item/ListItem.css deleted file mode 100644 index 3ba867c58d..0000000000 --- a/explorer/src/lib/components/list-item/ListItem.css +++ /dev/null @@ -1,98 +0,0 @@ -.details-list__term { - display: flex; - align-items: center; - padding: 0.25rem; - margin-bottom: 0.625rem; - background-color: var(--background-color-alt); - border-radius: var(--control-border-radius-size); - text-transform: uppercase; - position: relative; -} - -.details-list__term-layout { - display: flex; - align-items: center; - gap: 0.625rem; - width: 100%; -} - -.details-list__term:first-child, -.details-list__term:last-of-type { - padding: 0.25rem; -} - -.detail-list__help { - cursor: help; - flex-shrink: 0; -} - -.details-list__definition { - display: flex; - gap: 0.625rem; - align-items: center; - margin-bottom: 1.25rem; - line-break: anywhere; -} - -.details-list__definition:last-of-type { - margin-bottom: 0; -} - -.details-list__term.details-list__term--table { - padding: 0.625rem 1.125rem; - margin-bottom: 0rem; - border-radius: 0; -} - -.details-list__term:first-child.details-list__term--table { - border-top-left-radius: 0; - border-top-right-radius: var(--control-border-radius-size); - padding: 1rem 1.125rem 0.625rem; -} - -.details-list__term:last-of-type.details-list__term--table { - border-bottom-left-radius: 0; - border-bottom-right-radius: var(--control-border-radius-size); - padding: 0.625rem 1.125rem 1rem; -} - -.details-list__term:last-of-type.details-list__term--table { - width: 100%; -} - -.details-list__term.details-list__term--table, -.details-list__definition.details-list__definition--table { - margin-bottom: 0rem; -} - -@media (min-width: 640px) { - .details-list__term { - padding: 0.9375rem 1.125rem; - border-radius: 0; - } - - .details-list__term:first-child { - border-top-left-radius: var(--control-border-radius-size); - border-top-right-radius: var(--control-border-radius-size); - padding: 1rem 1.125rem 0.9375rem; - } - - .details-list__term:last-of-type { - border-bottom-left-radius: var(--control-border-radius-size); - border-bottom-right-radius: var(--control-border-radius-size); - padding: 0.9375rem 1.125rem 1rem; - } - - .details-list__term:last-of-type { - width: 100%; - } - - .details-list__term, - .details-list__definition { - margin-bottom: 0rem; - } - - .details-list__definition:last-of-type { - padding-top: 0rem; - } -} diff --git a/explorer/src/lib/components/list-item/ListItem.svelte b/explorer/src/lib/components/list-item/ListItem.svelte deleted file mode 100644 index 7f18d29e74..0000000000 --- a/explorer/src/lib/components/list-item/ListItem.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - - -
-
- {#if tooltipText} - - {/if} - -
-
-
- -
diff --git a/explorer/src/lib/components/navbar/Navbar.css b/explorer/src/lib/components/navbar/Navbar.css deleted file mode 100644 index 86cc516ab2..0000000000 --- a/explorer/src/lib/components/navbar/Navbar.css +++ /dev/null @@ -1,151 +0,0 @@ -.dusk-navbar { - overscroll-behavior: contain; - height: 100%; - z-index: 999; - margin: 0 auto; - padding: 1.5625rem 0; - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} - -.dusk-navbar--menu-hidden { - background-color: var(--background-color); - position: sticky; - height: auto; - min-height: 0; -} - -.dusk-navbar__logo { - display: flex; - align-items: center; -} - -.dusk-navbar__logo img { - width: 5.375rem; - height: 1.25rem; -} - -.dusk-navbar__toggle { - background-color: transparent; - color: var(--primary-color); - display: inline-flex; - align-items: center; - font-size: 1rem; - border: none; -} - -.dusk-navbar__toggle:focus { - outline: none; - box-shadow: none; -} - -.dusk-navbar__menu { - display: flex; - flex-direction: column; - justify-content: space-between; - width: 100%; - /* - 80px is the total height of the navbar on a small viewport. - It is needed so we know the exact height that needs to be set to the opened menu. - */ - height: calc(100dvh - 80px); - gap: 1.875rem; -} - -.dusk-navbar__menu--hidden { - display: none; -} - -.dusk-navbar__menu--network { - text-transform: uppercase; - font-weight: 500; - order: 3; -} - -.dusk-navbar__menu--links { - width: 100%; - order: 2; -} - -.dusk-nav-list.dusk-navbar__menu--links { - height: auto; -} - -.dusk-navbar__menu--search { - order: 1; - margin-top: 2.5rem; -} - -@media (min-width: 1024px) { - .dusk-navbar { - padding: 0; - min-height: 5rem; - position: relative; - background-color: transparent; - flex-direction: row; - flex-wrap: nowrap; - column-gap: 2.5rem; - } - - .dusk-navbar__logo img { - width: 8.0625rem; - height: 1.9375rem; - } - - .dusk-navbar--menu-hidden { - position: relative; - } - - .dusk-navbar__toggle { - display: none; - } - - .dusk-navbar__menu { - height: 100%; - flex-direction: row; - align-items: center; - justify-content: space-between; - row-gap: 2rem; - } - - .dusk-navbar__menu--hidden { - display: flex; - } - - .dusk-navbar__menu--network { - order: 1; - } - - .dusk-navbar__menu--links { - order: 2; - } - - .dusk-navbar__menu--search { - order: 3; - margin-top: 0; - } - - .dusk-navbar__menu--search-notification { - position: absolute; - left: 0; - top: 5rem; - } -} - -@media (min-width: 1280px) { - .dusk-navbar { - column-gap: 4.375rem; - } -} - -/* - Workaround for Bug 1851397 - https: //bugzilla.mozilla.org/show_bug.cgi?id=1851397 -*/ -@-moz-document url-prefix() { - .dusk-navbar__menu--network { - letter-spacing: 0 !important; - } -} diff --git a/explorer/src/lib/components/navbar/Navbar.svelte b/explorer/src/lib/components/navbar/Navbar.svelte deleted file mode 100644 index c941cb321f..0000000000 --- a/explorer/src/lib/components/navbar/Navbar.svelte +++ /dev/null @@ -1,153 +0,0 @@ - - - diff --git a/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.css b/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.css deleted file mode 100644 index 88324b0851..0000000000 --- a/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.css +++ /dev/null @@ -1,17 +0,0 @@ -.overview-panel__details-item { - flex: 1; - display: flex; - flex-direction: column; - justify-content: flex-start; - min-width: max-content; -} - -.overview-panel__details-item-title { - font-size: 1.125rem; - font-weight: 500; - margin-bottom: 0.3125rem; -} - -.overview-panel__details-item-subtitle { - font-size: 0.875rem; -} diff --git a/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.svelte b/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.svelte deleted file mode 100644 index 85df82f3e8..0000000000 --- a/explorer/src/lib/components/overview-panel-details-item/OverviewPanelDetailsItem.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - -
-
-

{subtitle}

-
diff --git a/explorer/src/lib/components/provisioners-card/ProvisionersCard.svelte b/explorer/src/lib/components/provisioners-card/ProvisionersCard.svelte deleted file mode 100644 index 36664a386f..0000000000 --- a/explorer/src/lib/components/provisioners-card/ProvisionersCard.svelte +++ /dev/null @@ -1,117 +0,0 @@ - - - - - loadMoreItems(), - disabled: isLoadMoreDisabled, - label: "Show More", - }} -> - {#if isSmallScreen} -
- {#each displayedProvisioners as provisioner (provisioner)} - - {/each} -
- {:else} - - {/if} -
diff --git a/explorer/src/lib/components/provisioners-list/ProvisionersList.css b/explorer/src/lib/components/provisioners-list/ProvisionersList.css deleted file mode 100644 index 2559c0ffb8..0000000000 --- a/explorer/src/lib/components/provisioners-list/ProvisionersList.css +++ /dev/null @@ -1,7 +0,0 @@ -.provisioners-list *[data-tooltip-id] { - cursor: help; -} - -.provisioners-list__staking-address { - text-transform: uppercase; -} diff --git a/explorer/src/lib/components/provisioners-list/ProvisionersList.svelte b/explorer/src/lib/components/provisioners-list/ProvisionersList.svelte deleted file mode 100644 index 0fea4b9238..0000000000 --- a/explorer/src/lib/components/provisioners-list/ProvisionersList.svelte +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - Rank - - #{data.rank} - - - - - - Staking address - {provisionerKey} - - - - - - - Owner Key - - - - - - - - Active Stake - {formatter(luxToDusk(data.amount))} DUSK - - - - - Inactive Stake - {formatter(luxToDusk(data.locked_amt))} DUSK - - - - - Maturity At - - #{formatter(data.eligibility)} - - - - - accumulated reward - - {formatter(luxToDusk(data.reward))} DUSK - - - - - - Soft Slashes - - {formatter(data.faults)} - - - - - - Hard Slashes - - {formatter(data.hard_faults)} - - - diff --git a/explorer/src/lib/components/provisioners-table/ProvisionersTable.css b/explorer/src/lib/components/provisioners-table/ProvisionersTable.css deleted file mode 100644 index ae6da410ba..0000000000 --- a/explorer/src/lib/components/provisioners-table/ProvisionersTable.css +++ /dev/null @@ -1,36 +0,0 @@ -.provisioners-table *[data-tooltip-id] { - cursor: help; -} - -.provisioners-table__stake-data-label, -.provisioners-table__slash-data-label { - font-weight: 500; -} - -.provisioners-table__staking-address-wrapper { - display: flex; - align-items: center; - gap: var(--default-gap); -} - -.provisioners-table__header-button { - display: inline-flex; - align-items: center; - gap: 0.25rem; - padding: 0; - border: 0; - margin: 0; - background: none; - font: inherit; - text-transform: uppercase; -} - -.provisioners-table__header-button:focus-visible { - outline: 2px solid currentColor; - outline-offset: 2px; -} - -.provisioners-table__header-sort-indicator { - font-size: 0.75em; - opacity: 0.7; -} diff --git a/explorer/src/lib/components/provisioners-table/ProvisionersTable.svelte b/explorer/src/lib/components/provisioners-table/ProvisionersTable.svelte deleted file mode 100644 index 30fdff70e4..0000000000 --- a/explorer/src/lib/components/provisioners-table/ProvisionersTable.svelte +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {#each sortedData as provisioner (provisioner.key)} - {@const consensusAddress = provisioner.key} - - - {provisioner.rank} - - -
- {middleEllipsis(consensusAddress, HASH_CHARS_LENGTH)} - -
-
- - - - - - - Active: - {numberFormatter(luxToDusk(provisioner.amount))} -
- Inactive: - {numberFormatter(luxToDusk(provisioner.locked_amt))} -
- Maturity At: - #{numberFormatter(provisioner.eligibility)} -
- - {@const parts = fixedNumberFormatter( - luxToDusk(provisioner.reward) - ).split(".")} - - - - {parts[0]}.{parts[1]} - - - - - Soft: - {numberFormatter(provisioner.faults)} -
- Hard: - {numberFormatter(provisioner.hard_faults)} -
-
- {/each} -
-
diff --git a/explorer/src/lib/components/search-notification/SearchNotification.css b/explorer/src/lib/components/search-notification/SearchNotification.css deleted file mode 100644 index f8162d7ff5..0000000000 --- a/explorer/src/lib/components/search-notification/SearchNotification.css +++ /dev/null @@ -1,43 +0,0 @@ -.search-notification { - display: flex; - flex-direction: column; - border: var(--control-border-size) solid var(--error-color); - width: 100%; - margin-top: 1.25rem; -} - -.search-notification__header { - display: flex; - justify-content: space-between; - padding-bottom: 0.625rem; -} - -.search-notification__header-text { - font-size: 1.125rem; -} - -.search-notification__header-action { - height: 1.75rem; - width: 1.75rem; -} - -.search-notification__content { - display: flex; - font-size: 1.125rem; -} - -.search-notification__content-query { - font-family: var(--mono-font-family); - font-weight: 500; - word-break: break-word; -} - -.search-notification__footer-text { - font-size: 0.875rem; -} - -@media (min-width: 1024px) { - .search-notification { - margin-top: 0rem; - } -} diff --git a/explorer/src/lib/components/search-notification/SearchNotification.svelte b/explorer/src/lib/components/search-notification/SearchNotification.svelte deleted file mode 100644 index 405b2f53a2..0000000000 --- a/explorer/src/lib/components/search-notification/SearchNotification.svelte +++ /dev/null @@ -1,42 +0,0 @@ - - - -
- The search string you entered is: {data.query} -
- {#if data.res instanceof Error} - - {data.res.message} - - {/if} -
diff --git a/explorer/src/lib/components/stale-data-notice/StaleDataNotice.svelte b/explorer/src/lib/components/stale-data-notice/StaleDataNotice.svelte deleted file mode 100644 index 80d9761d7c..0000000000 --- a/explorer/src/lib/components/stale-data-notice/StaleDataNotice.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - -{#if isStaleData} - -{/if} diff --git a/explorer/src/lib/components/table/README.md b/explorer/src/lib/components/table/README.md deleted file mode 100644 index ed589eacfb..0000000000 --- a/explorer/src/lib/components/table/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Table Component Usage - -This guide describes how to use the `Table` and associated components within SvelteKit to create a structured and styled table. - -## Example - -The following example demonstrates how to create a simple table with headers and multiple rows: - - - - - Name - Age - Country - - - - - Alice - 25 - USA - - - Bob - 30 - Canada - - - Charlie - 35 - UK - - -
diff --git a/explorer/src/lib/components/table/Table.css b/explorer/src/lib/components/table/Table.css deleted file mode 100644 index 0b8cb98976..0000000000 --- a/explorer/src/lib/components/table/Table.css +++ /dev/null @@ -1,53 +0,0 @@ -.table-container { - overflow-x: auto; - max-width: 100%; -} - -.table { - width: 100%; - border-collapse: collapse; - border-style: hidden; - text-transform: uppercase; - font-family: var(--mono-font-family); -} - -.table__header-cell { - text-align: left; - padding: 1rem 1.375rem; - font-weight: 500; - font-size: 0.875rem; - background-color: white; - position: sticky; - top: 0; - z-index: 1; - text-wrap: nowrap; - color: var(--smokey-black); -} - -.table__data-cell { - padding: 0.5rem 1.375rem; - font-weight: 400; - white-space: nowrap; - font-size: 0.75rem; -} - -.table__header-cell.align-left, -.table__data-cell.align-left { - text-align: left; -} -.table__header-cell.align-center, -.table__data-cell.align-center { - text-align: center; -} -.table__header-cell.align-right, -.table__data-cell.align-right { - text-align: right; -} - -.table__row:hover { - background-color: var(--on-primary-color); -} - -.table__data-cell .dusk-badge { - font-size: 0.75rem; -} diff --git a/explorer/src/lib/components/table/Table.svelte b/explorer/src/lib/components/table/Table.svelte deleted file mode 100644 index 8d027b443a..0000000000 --- a/explorer/src/lib/components/table/Table.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - -
- - -
-
diff --git a/explorer/src/lib/components/table/TableBody.svelte b/explorer/src/lib/components/table/TableBody.svelte deleted file mode 100644 index 5ff5b12752..0000000000 --- a/explorer/src/lib/components/table/TableBody.svelte +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/explorer/src/lib/components/table/TableCell.svelte b/explorer/src/lib/components/table/TableCell.svelte deleted file mode 100644 index 87539b8704..0000000000 --- a/explorer/src/lib/components/table/TableCell.svelte +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/table/TableHead.svelte b/explorer/src/lib/components/table/TableHead.svelte deleted file mode 100644 index eecb00de57..0000000000 --- a/explorer/src/lib/components/table/TableHead.svelte +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/explorer/src/lib/components/table/TableRow.svelte b/explorer/src/lib/components/table/TableRow.svelte deleted file mode 100644 index f0db9ffa93..0000000000 --- a/explorer/src/lib/components/table/TableRow.svelte +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/explorer/src/lib/components/table/index.js b/explorer/src/lib/components/table/index.js deleted file mode 100644 index 0d165eda3a..0000000000 --- a/explorer/src/lib/components/table/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as Table } from "./Table.svelte"; -export { default as TableHead } from "./TableHead.svelte"; -export { default as TableBody } from "./TableBody.svelte"; -export { default as TableRow } from "./TableRow.svelte"; -export { default as TableCell } from "./TableCell.svelte"; diff --git a/explorer/src/lib/components/textbox-and-button/TextboxAndButton.css b/explorer/src/lib/components/textbox-and-button/TextboxAndButton.css deleted file mode 100644 index 716d801a36..0000000000 --- a/explorer/src/lib/components/textbox-and-button/TextboxAndButton.css +++ /dev/null @@ -1,46 +0,0 @@ -.textbox-button { - display: flex; - align-items: center; - background-color: white; - border-radius: 1.875rem; - padding: var(--control-padding); - border-color: var(--control-border-color); - border-radius: var(--control-border-radius-size); - border-style: solid; - border-width: var(--control-border-size); -} - -.dark .textbox-button, -.dark .dusk-textbox.textbox-button__input { - background-color: black; -} - -.dusk-textbox.textbox-button__input { - width: 100%; - padding: 0; - border: none; - border-radius: 0; -} - -.dark .dusk-textbox.textbox-button__input { - color: var(--light-grey); -} - -.dusk-textbox.textbox-button__input:read-write:enabled:focus { - outline: 0 none; - border: none; - box-shadow: none; -} - -.textbox-button:focus-within { - border-color: var(--secondary-color-variant-dark); - box-shadow: inset 0 0 0 var(--control-border-size) - var(--secondary-color-variant-dark); - outline: 0 none; -} - -@media (min-width: 1024px) { - .textbox-button { - transition: width 0.5s ease-in-out; - } -} diff --git a/explorer/src/lib/components/textbox-and-button/TextboxAndButton.svelte b/explorer/src/lib/components/textbox-and-button/TextboxAndButton.svelte deleted file mode 100644 index 2771f2036c..0000000000 --- a/explorer/src/lib/components/textbox-and-button/TextboxAndButton.svelte +++ /dev/null @@ -1,129 +0,0 @@ - - -
- -
diff --git a/explorer/src/lib/components/token-details-table/TokenDetailsTable.svelte b/explorer/src/lib/components/token-details-table/TokenDetailsTable.svelte deleted file mode 100644 index 74f37111e1..0000000000 --- a/explorer/src/lib/components/token-details-table/TokenDetailsTable.svelte +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - ID - From - To - Amount (Dusk) - Fee (Dusk) - Status - Type - - - - {#each data as transaction (transaction)} - - {middleEllipsis(transaction.txid, HASH_CHARS_LENGTH)} - - - {middleEllipsis( - transaction.from ? transaction.from : "", - HASH_CHARS_LENGTH - )} - - - - - {middleEllipsis( - transaction.to ? transaction.to : "", - HASH_CHARS_LENGTH - )} - - - - {transaction.amount - ? formatter(luxToDusk(transaction.amount)) - : "N/A"} - - {formatter(luxToDusk(transaction.gasprice))} - - - - - - - - {/each} - -
diff --git a/explorer/src/lib/components/token-list-details/TokenListDetails.svelte b/explorer/src/lib/components/token-list-details/TokenListDetails.svelte deleted file mode 100644 index c1b859f9e7..0000000000 --- a/explorer/src/lib/components/token-list-details/TokenListDetails.svelte +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - Token - - {data.token} - - - - - - Total Current Supply - - {data.totalCurrentSupply} - - - - - - Max Circulating Supply - - {data.maxCirculatingSupply} - - - - - - Ticker - - {data.ticker} - - - - - - Contract ID - - {tokensContractID} - - - - - - Price - - {data.price} - - - diff --git a/explorer/src/lib/components/token-overview/TokenOverview.css b/explorer/src/lib/components/token-overview/TokenOverview.css deleted file mode 100644 index 1a160922af..0000000000 --- a/explorer/src/lib/components/token-overview/TokenOverview.css +++ /dev/null @@ -1,53 +0,0 @@ -.token-overview-panel { - display: flex; - padding: 1rem 1.375rem; - flex-direction: column; - row-gap: 0.75rem; - border-radius: 1.5rem; - background-color: var(--surface-color); - width: 100%; - text-transform: uppercase; - position: relative; - margin-bottom: 1.25rem; -} - -.token-overview-panel__header { - display: flex; - gap: 1.25rem; - flex-direction: column; - align-items: flex-start; -} - -@media (min-width: 992px) { - .token-overview-panel__header { - flex-direction: row; - align-items: center; - } -} - -.token-overview-panel__token-name { - font-weight: 500; - font-size: 1.125em; - margin-bottom: 0.3125rem; -} - -.token-overview-panel__token-address-subheader { - font-size: 1.125em; - color: var(--text-color-secondary); -} - -.token-overview-panel__token-address { - font-weight: 500; -} - -.token-overview-panel__separator { - border: none; - border-top: 1px solid var(--taupe-grey); - margin: 0.5rem 0; -} - -.token-overview-panel__details { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); - gap: 1rem; -} diff --git a/explorer/src/lib/components/token-overview/TokenOverview.svelte b/explorer/src/lib/components/token-overview/TokenOverview.svelte deleted file mode 100644 index d8fb346bff..0000000000 --- a/explorer/src/lib/components/token-overview/TokenOverview.svelte +++ /dev/null @@ -1,51 +0,0 @@ - - -
-
- -
-

{data.token}

-

- Address: - - {middleEllipsis( - data.contractId, - calculateAdaptiveCharCount( - screenWidth, - minScreenWidth, - maxScreenWidth, - minCharCount, - maxCharCount - ) - )} - -

-
-
-
-
-

{data.totalCurrentSupply} {data.ticker}

-

{data.maxCirculatingSupply}

-

${data.price}

-
-
diff --git a/explorer/src/lib/components/token-transactions-list/TokenTransactionsList.svelte b/explorer/src/lib/components/token-transactions-list/TokenTransactionsList.svelte deleted file mode 100644 index 1a0da765e7..0000000000 --- a/explorer/src/lib/components/token-transactions-list/TokenTransactionsList.svelte +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - {#if data.from} - - From - - - {middleEllipsis( - data.from, - calculateAdaptiveCharCount( - screenWidth, - minScreenWidth, - maxScreenWidth, - minCharCount, - maxCharCount - ) - )} - - - - {/if} - {#if data.to} - - To - - - {middleEllipsis( - data.to, - calculateAdaptiveCharCount( - screenWidth, - minScreenWidth, - maxScreenWidth, - minCharCount, - maxCharCount - ) - )} - - - - {/if} - - - - ID - - {middleEllipsis( - data.txid, - calculateAdaptiveCharCount( - screenWidth, - minScreenWidth, - maxScreenWidth, - minCharCount, - maxCharCount - ) - )} - - - - - {#if data.amount} - - Amount - - {formatter(luxToDusk(data.amount))} DUSK - - - {/if} - - - - Fee - - {formatter(luxToDusk(data.feepaid))} DUSK - - - - - - Status - - - - - - - - Type - - - - - diff --git a/explorer/src/lib/components/tokens-table/TokensTable.svelte b/explorer/src/lib/components/tokens-table/TokensTable.svelte deleted file mode 100644 index 7a77af08dc..0000000000 --- a/explorer/src/lib/components/tokens-table/TokensTable.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - Token - Total Current Supply - Max Circulating Supply - Ticker - Contract ID - Price ($) - - - - {#each data as token (token)} - - - {token.token} - {token.totalCurrentSupply} - {token.maxCirculatingSupply} - {token.ticker} - {middleEllipsis(token.contractId, HASH_CHARS_LENGTH)} - {token.price} - - {/each} - -
diff --git a/explorer/src/lib/components/transaction-details/TransactionDetails.css b/explorer/src/lib/components/transaction-details/TransactionDetails.css deleted file mode 100644 index a75bcbf2fa..0000000000 --- a/explorer/src/lib/components/transaction-details/TransactionDetails.css +++ /dev/null @@ -1,118 +0,0 @@ -.transaction-details__list { - display: grid; - grid-template-columns: minmax(0, 1fr); - font-size: 0.875rem; - column-gap: 1.875rem; - padding: 0 1.125rem; -} - -.transaction-details__status, -.transaction-details__type { - width: 100%; -} - -.transaction-details__gas-used { - width: 12.5rem; -} - -.transaction-details__payload { - padding: 0.625rem 0.875rem; - line-height: 1.3125rem; - width: 100%; - overflow-x: auto; -} - -.transaction-details__payload-switch { - position: absolute; - right: -3.8125rem; -} - -.transaction-details__list .details-list__term:nth-last-child(-n + 4) { - align-items: start; - margin-bottom: 0.625rem; - /* - 3.8125rem is the sum of the switch width plus the gap - between the switch and the dt element - */ - width: calc(100% - 3.8125rem); -} - -.transaction-details__memo { - padding: 0.625rem 0.875rem; - line-height: 1.3125rem; - width: 100%; - overflow-x: auto; -} - -.transaction-details__switch-wrapper { - display: flex; - align-items: center; - flex: 1 100%; - justify-content: space-between; -} - -.transaction-details__list-anchor { - font-family: var(--mono-font-family); -} - -.transaction-details__blob-hashes { - list-style-type: none; - display: flex; - flex-direction: column; - gap: var(--default-gap); -} - -/** - * We need to add a margin conditionally as these components are a bit - * odd as the list term has a padding, while the definition doesn't. - * If we have more than one li element we need a margin equal to that - * padding to have the term and the definition aligned on top. - */ -.transaction-details__blob-hashes:has(> li:nth-child(2)) { - margin-top: 0.9375rem; -} - -.transaction-details__blob-hash { - display: inline-flex; - align-items: center; - gap: var(--small-gap); -} - -.transaction-details__blob-hash pre { - white-space: pre-line; -} - -@media (min-width: 640px) { - .transaction-details__header-heading { - text-transform: none; - } - - .transaction-details__list { - display: inline-grid; - grid-template-columns: minmax(0, auto) minmax(0, 3fr); - } - - .transaction-details__payload { - margin-top: 1rem; - } - - .transaction-details__memo { - margin-top: 0rem; - } - - .transaction-details__payload-switch { - position: relative; - right: 0rem; - } - - .transaction-details__status, - .transaction-details__type { - width: auto; - } - - .transaction-details__list .details-list__term:nth-last-child(-n + 4) { - align-items: start; - margin-bottom: 0rem; - width: auto; - } -} diff --git a/explorer/src/lib/components/transaction-details/TransactionDetails.svelte b/explorer/src/lib/components/transaction-details/TransactionDetails.svelte deleted file mode 100644 index efadc3c0e8..0000000000 --- a/explorer/src/lib/components/transaction-details/TransactionDetails.svelte +++ /dev/null @@ -1,309 +0,0 @@ - - - - - -
- - - ID - - {withMiddleEllipsis(data.txid)} - - - - - - - block height - - {formatter(data.blockheight)} - - - - - timestamp - {`${data.date.toUTCString()} (${relativeTime})`} - - - - {#if data.txtype.toLowerCase() === "moonlight" && data.from} - - from - - {withMiddleEllipsis(data.from)} - - - - {/if} - - - {#if data.txtype.toLowerCase() === "moonlight" && data.to} - - to - - {withMiddleEllipsis(data.to)} - - - - {/if} - - - {#if data.amount} - - amount - - - {`${feeFormatter(luxToDusk(data.amount))} DUSK (${currencyFormatter(luxToDusk(data.amount) * /** @type {number} */ (market?.currentPrice.usd))})`} - - - - {/if} - - - - type - - - - - - - - status - - - - - - transaction fee - - - {`${feeFormatter(luxToDusk(data.feepaid))} DUSK (${currencyFormatter(luxToDusk(data.feepaid) * /** @type {number} */ (market?.currentPrice.usd))})`} - - - - - - - - gas price - - - {`${feeFormatter(luxToDusk(data.gasprice))} DUSK (${currencyFormatter(luxToDusk(data.gasprice) * /** @type {number} */ (market?.currentPrice.usd))})`} - - - - - - - - transaction gas limit - {data.gaslimit} - - - - - gas spent - {data.gasspent} - - - - {#if data.txtype.toLowerCase() === "moonlight" && data.nonce} - - nonce - {data.nonce} - - {/if} - - - - -
- memo - -
-
- - - {#if isMemoDecoded} - -
{data.memo ? decodeHexString(data.memo) : "---"}
-
- {:else} - {data.memo} - {/if} -
-
- - - - -
- payload - -
-
- - - {#if isPayloadToggled} - -
{data.payload
-                ? JSON.stringify(data.payload, null, 2)
-                : "---"}
-
- {/if} -
-
- - {#if data.blobHashes.length} - - - Blob hashes - -
    - {#each data.blobHashes as blobHash (blobHash)} -
  • -
    {withMiddleEllipsis(blobHash)}
    - -
  • - {/each} -
-
-
- {/if} -
-
diff --git a/explorer/src/lib/components/transaction-status/TransactionStatus.css b/explorer/src/lib/components/transaction-status/TransactionStatus.css deleted file mode 100644 index 55e99ca19f..0000000000 --- a/explorer/src/lib/components/transaction-status/TransactionStatus.css +++ /dev/null @@ -1,3 +0,0 @@ -.transaction-status[data-tooltip-id] { - cursor: help; -} diff --git a/explorer/src/lib/components/transaction-status/TransactionStatus.svelte b/explorer/src/lib/components/transaction-status/TransactionStatus.svelte deleted file mode 100644 index fa73714753..0000000000 --- a/explorer/src/lib/components/transaction-status/TransactionStatus.svelte +++ /dev/null @@ -1,40 +0,0 @@ - - - - - diff --git a/explorer/src/lib/components/transaction-type/TransactionType.css b/explorer/src/lib/components/transaction-type/TransactionType.css deleted file mode 100644 index f4ef6bfcc1..0000000000 --- a/explorer/src/lib/components/transaction-type/TransactionType.css +++ /dev/null @@ -1,9 +0,0 @@ -.transaction-type { - display: flex; - align-items: center; - gap: 0.3rem; -} - -.transaction-type__icon[data-tooltip-disabled="false"] { - cursor: help; -} diff --git a/explorer/src/lib/components/transaction-type/TransactionType.svelte b/explorer/src/lib/components/transaction-type/TransactionType.svelte deleted file mode 100644 index 9fc14e9eb2..0000000000 --- a/explorer/src/lib/components/transaction-type/TransactionType.svelte +++ /dev/null @@ -1,72 +0,0 @@ - - -
- {#if !isAccountsPage} - - {/if} - - {#if isAccountsPage} - - {/if} -
- - diff --git a/explorer/src/lib/components/transactions-card/TransactionsCard.svelte b/explorer/src/lib/components/transactions-card/TransactionsCard.svelte deleted file mode 100644 index 4d0cb0b444..0000000000 --- a/explorer/src/lib/components/transactions-card/TransactionsCard.svelte +++ /dev/null @@ -1,67 +0,0 @@ - - - - - loadMoreItems(), - disabled: isLoadMoreDisabled, - label: "Show More", - }} -> - {#if isSmallScreen} -
- {#each displayedTxns as txn (txn)} - - {/each} -
- {:else} - - {/if} -
diff --git a/explorer/src/lib/components/transactions-list/TransactionsList.css b/explorer/src/lib/components/transactions-list/TransactionsList.css deleted file mode 100644 index 0adeeea024..0000000000 --- a/explorer/src/lib/components/transactions-list/TransactionsList.css +++ /dev/null @@ -1,3 +0,0 @@ -.transaction-details__list-link { - text-transform: uppercase; -} diff --git a/explorer/src/lib/components/transactions-list/TransactionsList.svelte b/explorer/src/lib/components/transactions-list/TransactionsList.svelte deleted file mode 100644 index d28a3a7b56..0000000000 --- a/explorer/src/lib/components/transactions-list/TransactionsList.svelte +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - ID - - {middleEllipsis( - data.txid, - calculateAdaptiveCharCount( - screenWidth, - minScreenWidth, - maxScreenWidth, - minCharCount, - maxCharCount - ) - )} - - - - - - - relative time - - - - {#if mode === "full"} - - - Gas Price - - {formatter(data.gasprice)} - - - - - - Gas Limit - - {formatter(data.gaslimit)} - - - {/if} - - - - Fee - - {formatter(luxToDusk(data.feepaid))} DUSK - - - - - - Status - - - - - - - - Type - - - - - diff --git a/explorer/src/lib/components/transactions-table/TransactionsTable.css b/explorer/src/lib/components/transactions-table/TransactionsTable.css deleted file mode 100644 index cc8e5182c8..0000000000 --- a/explorer/src/lib/components/transactions-table/TransactionsTable.css +++ /dev/null @@ -1,17 +0,0 @@ -.transaction__transaction-id-container { - display: flex; - align-items: center; - gap: var(--default-gap); -} - -.transaction__fee-price-label, -.transaction__fee-limit-label { - font-weight: 500; -} - -.transaction__time { - display: block; - font-size: 0.75rem; - color: var(--color-text-secondary); - margin-top: 0.2rem; -} diff --git a/explorer/src/lib/components/transactions-table/TransactionsTable.svelte b/explorer/src/lib/components/transactions-table/TransactionsTable.svelte deleted file mode 100644 index 649a3ac5e6..0000000000 --- a/explorer/src/lib/components/transactions-table/TransactionsTable.svelte +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - ID - {#if mode === "full"} - Gas - {/if} - Fee (DUSK) - Status - Type - - - - {#each data as transaction (transaction)} - - -
- {middleEllipsis(transaction.txid, HASH_CHARS_LENGTH)} - -
- -
- {#if mode === "full"} - - PRICE: - {numberFormatter(transaction.gasprice)}
- LIMIT: - {numberFormatter(transaction.gaslimit)} -
- {/if} - {numberFormatter(luxToDusk(transaction.feepaid))} - - - - - - -
- {/each} -
-
diff --git a/explorer/src/lib/components/world-map/WorldMap.css b/explorer/src/lib/components/world-map/WorldMap.css deleted file mode 100644 index d92183dc30..0000000000 --- a/explorer/src/lib/components/world-map/WorldMap.css +++ /dev/null @@ -1,18 +0,0 @@ -.nodes-world-map { - aspect-ratio: 2; - width: 100%; - height: auto; - max-height: 805px; -} - -.nodes-world-map__location { - fill-opacity: 0.5; - stroke: var(--primary-color); - stroke-width: 0.5px; - fill: var(--success); -} - -.nodes-world-map__location:hover { - stroke: var(--background-color); - stroke-width: 0.5px; -} diff --git a/explorer/src/lib/components/world-map/WorldMap.svelte b/explorer/src/lib/components/world-map/WorldMap.svelte deleted file mode 100644 index 0881b4cbf8..0000000000 --- a/explorer/src/lib/components/world-map/WorldMap.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - {#each dataset.features as data, index (index)} - - {/each} - - {#each nodes ? nodes : [] as marker (`${marker.lon}x${marker.lat}`)} - - {/each} - - diff --git a/explorer/src/lib/components/world-map/world-map.json b/explorer/src/lib/components/world-map/world-map.json deleted file mode 100644 index 1b087ba921..0000000000 --- a/explorer/src/lib/components/world-map/world-map.json +++ /dev/null @@ -1,12509 +0,0 @@ -{ - "type": "FeatureCollection", - "features": [ - { - "type": "Feature", - "properties": { "name": "Afghanistan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [61.210817, 35.650072], - [62.230651, 35.270664], - [62.984662, 35.404041], - [63.193538, 35.857166], - [63.982896, 36.007957], - [64.546479, 36.312073], - [64.746105, 37.111818], - [65.588948, 37.305217], - [65.745631, 37.661164], - [66.217385, 37.39379], - [66.518607, 37.362784], - [67.075782, 37.356144], - [67.83, 37.144994], - [68.135562, 37.023115], - [68.859446, 37.344336], - [69.196273, 37.151144], - [69.518785, 37.608997], - [70.116578, 37.588223], - [70.270574, 37.735165], - [70.376304, 38.138396], - [70.806821, 38.486282], - [71.348131, 38.258905], - [71.239404, 37.953265], - [71.541918, 37.905774], - [71.448693, 37.065645], - [71.844638, 36.738171], - [72.193041, 36.948288], - [72.63689, 37.047558], - [73.260056, 37.495257], - [73.948696, 37.421566], - [74.980002, 37.41999], - [75.158028, 37.133031], - [74.575893, 37.020841], - [74.067552, 36.836176], - [72.920025, 36.720007], - [71.846292, 36.509942], - [71.262348, 36.074388], - [71.498768, 35.650563], - [71.613076, 35.153203], - [71.115019, 34.733126], - [71.156773, 34.348911], - [70.881803, 33.988856], - [69.930543, 34.02012], - [70.323594, 33.358533], - [69.687147, 33.105499], - [69.262522, 32.501944], - [69.317764, 31.901412], - [68.926677, 31.620189], - [68.556932, 31.71331], - [67.792689, 31.58293], - [67.683394, 31.303154], - [66.938891, 31.304911], - [66.381458, 30.738899], - [66.346473, 29.887943], - [65.046862, 29.472181], - [64.350419, 29.560031], - [64.148002, 29.340819], - [63.550261, 29.468331], - [62.549857, 29.318572], - [60.874248, 29.829239], - [61.781222, 30.73585], - [61.699314, 31.379506], - [60.941945, 31.548075], - [60.863655, 32.18292], - [60.536078, 32.981269], - [60.9637, 33.528832], - [60.52843, 33.676446], - [60.803193, 34.404102], - [61.210817, 35.650072] - ] - ] - }, - "id": "AFG" - }, - { - "type": "Feature", - "properties": { "name": "Angola" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [16.326528, -5.87747], - [16.57318, -6.622645], - [16.860191, -7.222298], - [17.089996, -7.545689], - [17.47297, -8.068551], - [18.134222, -7.987678], - [18.464176, -7.847014], - [19.016752, -7.988246], - [19.166613, -7.738184], - [19.417502, -7.155429], - [20.037723, -7.116361], - [20.091622, -6.94309], - [20.601823, -6.939318], - [20.514748, -7.299606], - [21.728111, -7.290872], - [21.746456, -7.920085], - [21.949131, -8.305901], - [21.801801, -8.908707], - [21.875182, -9.523708], - [22.208753, -9.894796], - [22.155268, -11.084801], - [22.402798, -10.993075], - [22.837345, -11.017622], - [23.456791, -10.867863], - [23.912215, -10.926826], - [24.017894, -11.237298], - [23.904154, -11.722282], - [24.079905, -12.191297], - [23.930922, -12.565848], - [24.016137, -12.911046], - [21.933886, -12.898437], - [21.887843, -16.08031], - [22.562478, -16.898451], - [23.215048, -17.523116], - [21.377176, -17.930636], - [18.956187, -17.789095], - [18.263309, -17.309951], - [14.209707, -17.353101], - [14.058501, -17.423381], - [13.462362, -16.971212], - [12.814081, -16.941343], - [12.215461, -17.111668], - [11.734199, -17.301889], - [11.640096, -16.673142], - [11.778537, -15.793816], - [12.123581, -14.878316], - [12.175619, -14.449144], - [12.500095, -13.5477], - [12.738479, -13.137906], - [13.312914, -12.48363], - [13.633721, -12.038645], - [13.738728, -11.297863], - [13.686379, -10.731076], - [13.387328, -10.373578], - [13.120988, -9.766897], - [12.87537, -9.166934], - [12.929061, -8.959091], - [13.236433, -8.562629], - [12.93304, -7.596539], - [12.728298, -6.927122], - [12.227347, -6.294448], - [12.322432, -6.100092], - [12.735171, -5.965682], - [13.024869, -5.984389], - [13.375597, -5.864241], - [16.326528, -5.87747] - ] - ], - [ - [ - [12.436688, -5.684304], - [12.182337, -5.789931], - [11.914963, -5.037987], - [12.318608, -4.60623], - [12.62076, -4.438023], - [12.995517, -4.781103], - [12.631612, -4.991271], - [12.468004, -5.248362], - [12.436688, -5.684304] - ] - ] - ] - }, - "id": "AGO" - }, - { - "type": "Feature", - "properties": { "name": "Albania" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.590247, 41.855404], - [20.463175, 41.515089], - [20.605182, 41.086226], - [21.02004, 40.842727], - [20.99999, 40.580004], - [20.674997, 40.435], - [20.615, 40.110007], - [20.150016, 39.624998], - [19.98, 39.694993], - [19.960002, 39.915006], - [19.406082, 40.250773], - [19.319059, 40.72723], - [19.40355, 41.409566], - [19.540027, 41.719986], - [19.371769, 41.877548], - [19.304486, 42.195745], - [19.738051, 42.688247], - [19.801613, 42.500093], - [20.0707, 42.58863], - [20.283755, 42.32026], - [20.52295, 42.21787], - [20.590247, 41.855404] - ] - ] - }, - "id": "ALB" - }, - { - "type": "Feature", - "properties": { "name": "United Arab Emirates" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [51.579519, 24.245497], - [51.757441, 24.294073], - [51.794389, 24.019826], - [52.577081, 24.177439], - [53.404007, 24.151317], - [54.008001, 24.121758], - [54.693024, 24.797892], - [55.439025, 25.439145], - [56.070821, 26.055464], - [56.261042, 25.714606], - [56.396847, 24.924732], - [55.886233, 24.920831], - [55.804119, 24.269604], - [55.981214, 24.130543], - [55.528632, 23.933604], - [55.525841, 23.524869], - [55.234489, 23.110993], - [55.208341, 22.70833], - [55.006803, 22.496948], - [52.000733, 23.001154], - [51.617708, 24.014219], - [51.579519, 24.245497] - ] - ] - }, - "id": "ARE" - }, - { - "type": "Feature", - "properties": { "name": "Argentina" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-65.5, -55.2], - [-66.45, -55.25], - [-66.95992, -54.89681], - [-67.56244, -54.87001], - [-68.63335, -54.8695], - [-68.63401, -52.63637], - [-68.25, -53.1], - [-67.75, -53.85], - [-66.45, -54.45], - [-65.05, -54.7], - [-65.5, -55.2] - ] - ], - [ - [ - [-64.964892, -22.075862], - [-64.377021, -22.798091], - [-63.986838, -21.993644], - [-62.846468, -22.034985], - [-62.685057, -22.249029], - [-60.846565, -23.880713], - [-60.028966, -24.032796], - [-58.807128, -24.771459], - [-57.777217, -25.16234], - [-57.63366, -25.603657], - [-58.618174, -27.123719], - [-57.60976, -27.395899], - [-56.486702, -27.548499], - [-55.695846, -27.387837], - [-54.788795, -26.621786], - [-54.625291, -25.739255], - [-54.13005, -25.547639], - [-53.628349, -26.124865], - [-53.648735, -26.923473], - [-54.490725, -27.474757], - [-55.162286, -27.881915], - [-56.2909, -28.852761], - [-57.625133, -30.216295], - [-57.874937, -31.016556], - [-58.14244, -32.044504], - [-58.132648, -33.040567], - [-58.349611, -33.263189], - [-58.427074, -33.909454], - [-58.495442, -34.43149], - [-57.22583, -35.288027], - [-57.362359, -35.97739], - [-56.737487, -36.413126], - [-56.788285, -36.901572], - [-57.749157, -38.183871], - [-59.231857, -38.72022], - [-61.237445, -38.928425], - [-62.335957, -38.827707], - [-62.125763, -39.424105], - [-62.330531, -40.172586], - [-62.145994, -40.676897], - [-62.745803, -41.028761], - [-63.770495, -41.166789], - [-64.73209, -40.802677], - [-65.118035, -41.064315], - [-64.978561, -42.058001], - [-64.303408, -42.359016], - [-63.755948, -42.043687], - [-63.458059, -42.563138], - [-64.378804, -42.873558], - [-65.181804, -43.495381], - [-65.328823, -44.501366], - [-65.565269, -45.036786], - [-66.509966, -45.039628], - [-67.293794, -45.551896], - [-67.580546, -46.301773], - [-66.597066, -47.033925], - [-65.641027, -47.236135], - [-65.985088, -48.133289], - [-67.166179, -48.697337], - [-67.816088, -49.869669], - [-68.728745, -50.264218], - [-69.138539, -50.73251], - [-68.815561, -51.771104], - [-68.149995, -52.349983], - [-68.571545, -52.299444], - [-69.498362, -52.142761], - [-71.914804, -52.009022], - [-72.329404, -51.425956], - [-72.309974, -50.67701], - [-72.975747, -50.74145], - [-73.328051, -50.378785], - [-73.415436, -49.318436], - [-72.648247, -48.878618], - [-72.331161, -48.244238], - [-72.447355, -47.738533], - [-71.917258, -46.884838], - [-71.552009, -45.560733], - [-71.659316, -44.973689], - [-71.222779, -44.784243], - [-71.329801, -44.407522], - [-71.793623, -44.207172], - [-71.464056, -43.787611], - [-71.915424, -43.408565], - [-72.148898, -42.254888], - [-71.746804, -42.051386], - [-71.915734, -40.832339], - [-71.680761, -39.808164], - [-71.413517, -38.916022], - [-70.814664, -38.552995], - [-71.118625, -37.576827], - [-71.121881, -36.658124], - [-70.364769, -36.005089], - [-70.388049, -35.169688], - [-69.817309, -34.193571], - [-69.814777, -33.273886], - [-70.074399, -33.09121], - [-70.535069, -31.36501], - [-69.919008, -30.336339], - [-70.01355, -29.367923], - [-69.65613, -28.459141], - [-69.001235, -27.521214], - [-68.295542, -26.89934], - [-68.5948, -26.506909], - [-68.386001, -26.185016], - [-68.417653, -24.518555], - [-67.328443, -24.025303], - [-66.985234, -22.986349], - [-67.106674, -22.735925], - [-66.273339, -21.83231], - [-64.964892, -22.075862] - ] - ] - ] - }, - "id": "ARG" - }, - { - "type": "Feature", - "properties": { "name": "Armenia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [43.582746, 41.092143], - [44.97248, 41.248129], - [45.179496, 40.985354], - [45.560351, 40.81229], - [45.359175, 40.561504], - [45.891907, 40.218476], - [45.610012, 39.899994], - [46.034534, 39.628021], - [46.483499, 39.464155], - [46.50572, 38.770605], - [46.143623, 38.741201], - [45.735379, 39.319719], - [45.739978, 39.473999], - [45.298145, 39.471751], - [45.001987, 39.740004], - [44.79399, 39.713003], - [44.400009, 40.005], - [43.656436, 40.253564], - [43.752658, 40.740201], - [43.582746, 41.092143] - ] - ] - }, - "id": "ARM" - }, - { - "type": "Feature", - "properties": { "name": "French Southern and Antarctic Lands" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [68.935, -48.625], - [69.58, -48.94], - [70.525, -49.065], - [70.56, -49.255], - [70.28, -49.71], - [68.745, -49.775], - [68.72, -49.2425], - [68.8675, -48.83], - [68.935, -48.625] - ] - ] - }, - "id": "ATF" - }, - { - "type": "Feature", - "properties": { "name": "Australia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [145.397978, -40.792549], - [146.364121, -41.137695], - [146.908584, -41.000546], - [147.689259, -40.808258], - [148.289068, -40.875438], - [148.359865, -42.062445], - [148.017301, -42.407024], - [147.914052, -43.211522], - [147.564564, -42.937689], - [146.870343, -43.634597], - [146.663327, -43.580854], - [146.048378, -43.549745], - [145.43193, -42.693776], - [145.29509, -42.03361], - [144.718071, -41.162552], - [144.743755, -40.703975], - [145.397978, -40.792549] - ] - ], - [ - [ - [143.561811, -13.763656], - [143.922099, -14.548311], - [144.563714, -14.171176], - [144.894908, -14.594458], - [145.374724, -14.984976], - [145.271991, -15.428205], - [145.48526, -16.285672], - [145.637033, -16.784918], - [145.888904, -16.906926], - [146.160309, -17.761655], - [146.063674, -18.280073], - [146.387478, -18.958274], - [147.471082, -19.480723], - [148.177602, -19.955939], - [148.848414, -20.39121], - [148.717465, -20.633469], - [149.28942, -21.260511], - [149.678337, -22.342512], - [150.077382, -22.122784], - [150.482939, -22.556142], - [150.727265, -22.402405], - [150.899554, -23.462237], - [151.609175, -24.076256], - [152.07354, -24.457887], - [152.855197, -25.267501], - [153.136162, -26.071173], - [153.161949, -26.641319], - [153.092909, -27.2603], - [153.569469, -28.110067], - [153.512108, -28.995077], - [153.339095, -29.458202], - [153.069241, -30.35024], - [153.089602, -30.923642], - [152.891578, -31.640446], - [152.450002, -32.550003], - [151.709117, -33.041342], - [151.343972, -33.816023], - [151.010555, -34.31036], - [150.714139, -35.17346], - [150.32822, -35.671879], - [150.075212, -36.420206], - [149.946124, -37.109052], - [149.997284, -37.425261], - [149.423882, -37.772681], - [148.304622, -37.809061], - [147.381733, -38.219217], - [146.922123, -38.606532], - [146.317922, -39.035757], - [145.489652, -38.593768], - [144.876976, -38.417448], - [145.032212, -37.896188], - [144.485682, -38.085324], - [143.609974, -38.809465], - [142.745427, -38.538268], - [142.17833, -38.380034], - [141.606582, -38.308514], - [140.638579, -38.019333], - [139.992158, -37.402936], - [139.806588, -36.643603], - [139.574148, -36.138362], - [139.082808, -35.732754], - [138.120748, -35.612296], - [138.449462, -35.127261], - [138.207564, -34.384723], - [137.71917, -35.076825], - [136.829406, -35.260535], - [137.352371, -34.707339], - [137.503886, -34.130268], - [137.890116, -33.640479], - [137.810328, -32.900007], - [136.996837, -33.752771], - [136.372069, -34.094766], - [135.989043, -34.890118], - [135.208213, -34.47867], - [135.239218, -33.947953], - [134.613417, -33.222778], - [134.085904, -32.848072], - [134.273903, -32.617234], - [132.990777, -32.011224], - [132.288081, -31.982647], - [131.326331, -31.495803], - [129.535794, -31.590423], - [128.240938, -31.948489], - [127.102867, -32.282267], - [126.148714, -32.215966], - [125.088623, -32.728751], - [124.221648, -32.959487], - [124.028947, -33.483847], - [123.659667, -33.890179], - [122.811036, -33.914467], - [122.183064, -34.003402], - [121.299191, -33.821036], - [120.580268, -33.930177], - [119.893695, -33.976065], - [119.298899, -34.509366], - [119.007341, -34.464149], - [118.505718, -34.746819], - [118.024972, -35.064733], - [117.295507, -35.025459], - [116.625109, -35.025097], - [115.564347, -34.386428], - [115.026809, -34.196517], - [115.048616, -33.623425], - [115.545123, -33.487258], - [115.714674, -33.259572], - [115.679379, -32.900369], - [115.801645, -32.205062], - [115.689611, -31.612437], - [115.160909, -30.601594], - [114.997043, -30.030725], - [115.040038, -29.461095], - [114.641974, -28.810231], - [114.616498, -28.516399], - [114.173579, -28.118077], - [114.048884, -27.334765], - [113.477498, -26.543134], - [113.338953, -26.116545], - [113.778358, -26.549025], - [113.440962, -25.621278], - [113.936901, -25.911235], - [114.232852, -26.298446], - [114.216161, -25.786281], - [113.721255, -24.998939], - [113.625344, -24.683971], - [113.393523, -24.384764], - [113.502044, -23.80635], - [113.706993, -23.560215], - [113.843418, -23.059987], - [113.736552, -22.475475], - [114.149756, -21.755881], - [114.225307, -22.517488], - [114.647762, -21.82952], - [115.460167, -21.495173], - [115.947373, -21.068688], - [116.711615, -20.701682], - [117.166316, -20.623599], - [117.441545, -20.746899], - [118.229559, -20.374208], - [118.836085, -20.263311], - [118.987807, -20.044203], - [119.252494, -19.952942], - [119.805225, -19.976506], - [120.85622, -19.683708], - [121.399856, -19.239756], - [121.655138, -18.705318], - [122.241665, -18.197649], - [122.286624, -17.798603], - [122.312772, -17.254967], - [123.012574, -16.4052], - [123.433789, -17.268558], - [123.859345, -17.069035], - [123.503242, -16.596506], - [123.817073, -16.111316], - [124.258287, -16.327944], - [124.379726, -15.56706], - [124.926153, -15.0751], - [125.167275, -14.680396], - [125.670087, -14.51007], - [125.685796, -14.230656], - [126.125149, -14.347341], - [126.142823, -14.095987], - [126.582589, -13.952791], - [127.065867, -13.817968], - [127.804633, -14.276906], - [128.35969, -14.86917], - [128.985543, -14.875991], - [129.621473, -14.969784], - [129.4096, -14.42067], - [129.888641, -13.618703], - [130.339466, -13.357376], - [130.183506, -13.10752], - [130.617795, -12.536392], - [131.223495, -12.183649], - [131.735091, -12.302453], - [132.575298, -12.114041], - [132.557212, -11.603012], - [131.824698, -11.273782], - [132.357224, -11.128519], - [133.019561, -11.376411], - [133.550846, -11.786515], - [134.393068, -12.042365], - [134.678632, -11.941183], - [135.298491, -12.248606], - [135.882693, -11.962267], - [136.258381, -12.049342], - [136.492475, -11.857209], - [136.95162, -12.351959], - [136.685125, -12.887223], - [136.305407, -13.29123], - [135.961758, -13.324509], - [136.077617, -13.724278], - [135.783836, -14.223989], - [135.428664, -14.715432], - [135.500184, -14.997741], - [136.295175, -15.550265], - [137.06536, -15.870762], - [137.580471, -16.215082], - [138.303217, -16.807604], - [138.585164, -16.806622], - [139.108543, -17.062679], - [139.260575, -17.371601], - [140.215245, -17.710805], - [140.875463, -17.369069], - [141.07111, -16.832047], - [141.274095, -16.38887], - [141.398222, -15.840532], - [141.702183, -15.044921], - [141.56338, -14.561333], - [141.63552, -14.270395], - [141.519869, -13.698078], - [141.65092, -12.944688], - [141.842691, -12.741548], - [141.68699, -12.407614], - [141.928629, -11.877466], - [142.118488, -11.328042], - [142.143706, -11.042737], - [142.51526, -10.668186], - [142.79731, -11.157355], - [142.866763, -11.784707], - [143.115947, -11.90563], - [143.158632, -12.325656], - [143.522124, -12.834358], - [143.597158, -13.400422], - [143.561811, -13.763656] - ] - ] - ] - }, - "id": "AUS" - }, - { - "type": "Feature", - "properties": { "name": "Austria" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.979667, 48.123497], - [16.903754, 47.714866], - [16.340584, 47.712902], - [16.534268, 47.496171], - [16.202298, 46.852386], - [16.011664, 46.683611], - [15.137092, 46.658703], - [14.632472, 46.431817], - [13.806475, 46.509306], - [12.376485, 46.767559], - [12.153088, 47.115393], - [11.164828, 46.941579], - [11.048556, 46.751359], - [10.442701, 46.893546], - [9.932448, 46.920728], - [9.47997, 47.10281], - [9.632932, 47.347601], - [9.594226, 47.525058], - [9.896068, 47.580197], - [10.402084, 47.302488], - [10.544504, 47.566399], - [11.426414, 47.523766], - [12.141357, 47.703083], - [12.62076, 47.672388], - [12.932627, 47.467646], - [13.025851, 47.637584], - [12.884103, 48.289146], - [13.243357, 48.416115], - [13.595946, 48.877172], - [14.338898, 48.555305], - [14.901447, 48.964402], - [15.253416, 49.039074], - [16.029647, 48.733899], - [16.499283, 48.785808], - [16.960288, 48.596982], - [16.879983, 48.470013], - [16.979667, 48.123497] - ] - ] - }, - "id": "AUT" - }, - { - "type": "Feature", - "properties": { "name": "Azerbaijan" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [45.001987, 39.740004], - [45.298145, 39.471751], - [45.739978, 39.473999], - [45.735379, 39.319719], - [46.143623, 38.741201], - [45.457722, 38.874139], - [44.952688, 39.335765], - [44.79399, 39.713003], - [45.001987, 39.740004] - ] - ], - [ - [ - [47.373315, 41.219732], - [47.815666, 41.151416], - [47.987283, 41.405819], - [48.584353, 41.80887], - [49.110264, 41.282287], - [49.618915, 40.572924], - [50.08483, 40.526157], - [50.392821, 40.256561], - [49.569202, 40.176101], - [49.395259, 39.399482], - [49.223228, 39.049219], - [48.856532, 38.815486], - [48.883249, 38.320245], - [48.634375, 38.270378], - [48.010744, 38.794015], - [48.355529, 39.288765], - [48.060095, 39.582235], - [47.685079, 39.508364], - [46.50572, 38.770605], - [46.483499, 39.464155], - [46.034534, 39.628021], - [45.610012, 39.899994], - [45.891907, 40.218476], - [45.359175, 40.561504], - [45.560351, 40.81229], - [45.179496, 40.985354], - [44.97248, 41.248129], - [45.217426, 41.411452], - [45.962601, 41.123873], - [46.501637, 41.064445], - [46.637908, 41.181673], - [46.145432, 41.722802], - [46.404951, 41.860675], - [46.686071, 41.827137], - [47.373315, 41.219732] - ] - ] - ] - }, - "id": "AZE" - }, - { - "type": "Feature", - "properties": { "name": "Burundi" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [29.339998, -4.499983], - [29.276384, -3.293907], - [29.024926, -2.839258], - [29.632176, -2.917858], - [29.938359, -2.348487], - [30.469696, -2.413858], - [30.527677, -2.807632], - [30.743013, -3.034285], - [30.752263, -3.35933], - [30.50556, -3.568567], - [30.116333, -4.090138], - [29.753512, -4.452389], - [29.339998, -4.499983] - ] - ] - }, - "id": "BDI" - }, - { - "type": "Feature", - "properties": { "name": "Belgium" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [3.314971, 51.345781], - [4.047071, 51.267259], - [4.973991, 51.475024], - [5.606976, 51.037298], - [6.156658, 50.803721], - [6.043073, 50.128052], - [5.782417, 50.090328], - [5.674052, 49.529484], - [4.799222, 49.985373], - [4.286023, 49.907497], - [3.588184, 50.378992], - [3.123252, 50.780363], - [2.658422, 50.796848], - [2.513573, 51.148506], - [3.314971, 51.345781] - ] - ] - }, - "id": "BEL" - }, - { - "type": "Feature", - "properties": { "name": "Benin" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [2.691702, 6.258817], - [1.865241, 6.142158], - [1.618951, 6.832038], - [1.664478, 9.12859], - [1.463043, 9.334624], - [1.425061, 9.825395], - [1.077795, 10.175607], - [0.772336, 10.470808], - [0.899563, 10.997339], - [1.24347, 11.110511], - [1.447178, 11.547719], - [1.935986, 11.64115], - [2.154474, 11.94015], - [2.490164, 12.233052], - [2.848643, 12.235636], - [3.61118, 11.660167], - [3.572216, 11.327939], - [3.797112, 10.734746], - [3.60007, 10.332186], - [3.705438, 10.06321], - [3.220352, 9.444153], - [2.912308, 9.137608], - [2.723793, 8.506845], - [2.749063, 7.870734], - [2.691702, 6.258817] - ] - ] - }, - "id": "BEN" - }, - { - "type": "Feature", - "properties": { "name": "Burkina Faso" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-2.827496, 9.642461], - [-3.511899, 9.900326], - [-3.980449, 9.862344], - [-4.330247, 9.610835], - [-4.779884, 9.821985], - [-4.954653, 10.152714], - [-5.404342, 10.370737], - [-5.470565, 10.95127], - [-5.197843, 11.375146], - [-5.220942, 11.713859], - [-4.427166, 12.542646], - [-4.280405, 13.228444], - [-4.006391, 13.472485], - [-3.522803, 13.337662], - [-3.103707, 13.541267], - [-2.967694, 13.79815], - [-2.191825, 14.246418], - [-2.001035, 14.559008], - [-1.066363, 14.973815], - [-0.515854, 15.116158], - [-0.266257, 14.924309], - [0.374892, 14.928908], - [0.295646, 14.444235], - [0.429928, 13.988733], - [0.993046, 13.33575], - [1.024103, 12.851826], - [2.177108, 12.625018], - [2.154474, 11.94015], - [1.935986, 11.64115], - [1.447178, 11.547719], - [1.24347, 11.110511], - [0.899563, 10.997339], - [0.023803, 11.018682], - [-0.438702, 11.098341], - [-0.761576, 10.93693], - [-1.203358, 11.009819], - [-2.940409, 10.96269], - [-2.963896, 10.395335], - [-2.827496, 9.642461] - ] - ] - }, - "id": "BFA" - }, - { - "type": "Feature", - "properties": { "name": "Bangladesh" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [92.672721, 22.041239], - [92.652257, 21.324048], - [92.303234, 21.475485], - [92.368554, 20.670883], - [92.082886, 21.192195], - [92.025215, 21.70157], - [91.834891, 22.182936], - [91.417087, 22.765019], - [90.496006, 22.805017], - [90.586957, 22.392794], - [90.272971, 21.836368], - [89.847467, 22.039146], - [89.70205, 21.857116], - [89.418863, 21.966179], - [89.031961, 22.055708], - [88.876312, 22.879146], - [88.52977, 23.631142], - [88.69994, 24.233715], - [88.084422, 24.501657], - [88.306373, 24.866079], - [88.931554, 25.238692], - [88.209789, 25.768066], - [88.563049, 26.446526], - [89.355094, 26.014407], - [89.832481, 25.965082], - [89.920693, 25.26975], - [90.872211, 25.132601], - [91.799596, 25.147432], - [92.376202, 24.976693], - [91.915093, 24.130414], - [91.46773, 24.072639], - [91.158963, 23.503527], - [91.706475, 22.985264], - [91.869928, 23.624346], - [92.146035, 23.627499], - [92.672721, 22.041239] - ] - ] - }, - "id": "BGD" - }, - { - "type": "Feature", - "properties": { "name": "Bulgaria" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.65715, 44.234923], - [22.944832, 43.823785], - [23.332302, 43.897011], - [24.100679, 43.741051], - [25.569272, 43.688445], - [26.065159, 43.943494], - [27.2424, 44.175986], - [27.970107, 43.812468], - [28.558081, 43.707462], - [28.039095, 43.293172], - [27.673898, 42.577892], - [27.99672, 42.007359], - [27.135739, 42.141485], - [26.117042, 41.826905], - [26.106138, 41.328899], - [25.197201, 41.234486], - [24.492645, 41.583896], - [23.692074, 41.309081], - [22.952377, 41.337994], - [22.881374, 41.999297], - [22.380526, 42.32026], - [22.545012, 42.461362], - [22.436595, 42.580321], - [22.604801, 42.898519], - [22.986019, 43.211161], - [22.500157, 43.642814], - [22.410446, 44.008063], - [22.65715, 44.234923] - ] - ] - }, - "id": "BGR" - }, - { - "type": "Feature", - "properties": { "name": "The Bahamas" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-77.53466, 23.75975], - [-77.78, 23.71], - [-78.03405, 24.28615], - [-78.40848, 24.57564], - [-78.19087, 25.2103], - [-77.89, 25.17], - [-77.54, 24.34], - [-77.53466, 23.75975] - ] - ], - [ - [ - [-77.82, 26.58], - [-78.91, 26.42], - [-78.98, 26.79], - [-78.51, 26.87], - [-77.85, 26.84], - [-77.82, 26.58] - ] - ], - [ - [ - [-77, 26.59], - [-77.17255, 25.87918], - [-77.35641, 26.00735], - [-77.34, 26.53], - [-77.78802, 26.92516], - [-77.79, 27.04], - [-77, 26.59] - ] - ] - ] - }, - "id": "BHS" - }, - { - "type": "Feature", - "properties": { "name": "Bosnia and Herzegovina" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [19.005486, 44.860234], - [19.36803, 44.863], - [19.11761, 44.42307], - [19.59976, 44.03847], - [19.454, 43.5681], - [19.21852, 43.52384], - [19.03165, 43.43253], - [18.70648, 43.20011], - [18.56, 42.65], - [17.674922, 43.028563], - [17.297373, 43.446341], - [16.916156, 43.667722], - [16.456443, 44.04124], - [16.23966, 44.351143], - [15.750026, 44.818712], - [15.959367, 45.233777], - [16.318157, 45.004127], - [16.534939, 45.211608], - [17.002146, 45.233777], - [17.861783, 45.06774], - [18.553214, 45.08159], - [19.005486, 44.860234] - ] - ] - }, - "id": "BIH" - }, - { - "type": "Feature", - "properties": { "name": "Belarus" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [23.484128, 53.912498], - [24.450684, 53.905702], - [25.536354, 54.282423], - [25.768433, 54.846963], - [26.588279, 55.167176], - [26.494331, 55.615107], - [27.10246, 55.783314], - [28.176709, 56.16913], - [29.229513, 55.918344], - [29.371572, 55.670091], - [29.896294, 55.789463], - [30.873909, 55.550976], - [30.971836, 55.081548], - [30.757534, 54.811771], - [31.384472, 54.157056], - [31.791424, 53.974639], - [31.731273, 53.794029], - [32.405599, 53.618045], - [32.693643, 53.351421], - [32.304519, 53.132726], - [31.497644, 53.167427], - [31.305201, 53.073996], - [31.540018, 52.742052], - [31.785998, 52.101678], - [30.927549, 52.042353], - [30.619454, 51.822806], - [30.555117, 51.319503], - [30.157364, 51.416138], - [29.254938, 51.368234], - [28.992835, 51.602044], - [28.617613, 51.427714], - [28.241615, 51.572227], - [27.454066, 51.592303], - [26.337959, 51.832289], - [25.327788, 51.910656], - [24.553106, 51.888461], - [24.005078, 51.617444], - [23.527071, 51.578454], - [23.508002, 52.023647], - [23.199494, 52.486977], - [23.799199, 52.691099], - [23.804935, 53.089731], - [23.527536, 53.470122], - [23.484128, 53.912498] - ] - ] - }, - "id": "BLR" - }, - { - "type": "Feature", - "properties": { "name": "Belize" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-89.14308, 17.808319], - [-89.150909, 17.955468], - [-89.029857, 18.001511], - [-88.848344, 17.883198], - [-88.490123, 18.486831], - [-88.300031, 18.499982], - [-88.296336, 18.353273], - [-88.106813, 18.348674], - [-88.123479, 18.076675], - [-88.285355, 17.644143], - [-88.197867, 17.489475], - [-88.302641, 17.131694], - [-88.239518, 17.036066], - [-88.355428, 16.530774], - [-88.551825, 16.265467], - [-88.732434, 16.233635], - [-88.930613, 15.887273], - [-89.229122, 15.886938], - [-89.150806, 17.015577], - [-89.14308, 17.808319] - ] - ] - }, - "id": "BLZ" - }, - { - "type": "Feature", - "properties": { "name": "Bolivia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-62.846468, -22.034985], - [-63.986838, -21.993644], - [-64.377021, -22.798091], - [-64.964892, -22.075862], - [-66.273339, -21.83231], - [-67.106674, -22.735925], - [-67.82818, -22.872919], - [-68.219913, -21.494347], - [-68.757167, -20.372658], - [-68.442225, -19.405068], - [-68.966818, -18.981683], - [-69.100247, -18.260125], - [-69.590424, -17.580012], - [-68.959635, -16.500698], - [-69.389764, -15.660129], - [-69.160347, -15.323974], - [-69.339535, -14.953195], - [-68.948887, -14.453639], - [-68.929224, -13.602684], - [-68.88008, -12.899729], - [-68.66508, -12.5613], - [-69.529678, -10.951734], - [-68.786158, -11.03638], - [-68.271254, -11.014521], - [-68.048192, -10.712059], - [-67.173801, -10.306812], - [-66.646908, -9.931331], - [-65.338435, -9.761988], - [-65.444837, -10.511451], - [-65.321899, -10.895872], - [-65.402281, -11.56627], - [-64.316353, -12.461978], - [-63.196499, -12.627033], - [-62.80306, -13.000653], - [-62.127081, -13.198781], - [-61.713204, -13.489202], - [-61.084121, -13.479384], - [-60.503304, -13.775955], - [-60.459198, -14.354007], - [-60.264326, -14.645979], - [-60.251149, -15.077219], - [-60.542966, -15.09391], - [-60.15839, -16.258284], - [-58.24122, -16.299573], - [-58.388058, -16.877109], - [-58.280804, -17.27171], - [-57.734558, -17.552468], - [-57.498371, -18.174188], - [-57.676009, -18.96184], - [-57.949997, -19.400004], - [-57.853802, -19.969995], - [-58.166392, -20.176701], - [-58.183471, -19.868399], - [-59.115042, -19.356906], - [-60.043565, -19.342747], - [-61.786326, -19.633737], - [-62.265961, -20.513735], - [-62.291179, -21.051635], - [-62.685057, -22.249029], - [-62.846468, -22.034985] - ] - ] - }, - "id": "BOL" - }, - { - "type": "Feature", - "properties": { "name": "Brazil" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.625133, -30.216295], - [-56.2909, -28.852761], - [-55.162286, -27.881915], - [-54.490725, -27.474757], - [-53.648735, -26.923473], - [-53.628349, -26.124865], - [-54.13005, -25.547639], - [-54.625291, -25.739255], - [-54.428946, -25.162185], - [-54.293476, -24.5708], - [-54.29296, -24.021014], - [-54.652834, -23.839578], - [-55.027902, -24.001274], - [-55.400747, -23.956935], - [-55.517639, -23.571998], - [-55.610683, -22.655619], - [-55.797958, -22.35693], - [-56.473317, -22.0863], - [-56.88151, -22.282154], - [-57.937156, -22.090176], - [-57.870674, -20.732688], - [-58.166392, -20.176701], - [-57.853802, -19.969995], - [-57.949997, -19.400004], - [-57.676009, -18.96184], - [-57.498371, -18.174188], - [-57.734558, -17.552468], - [-58.280804, -17.27171], - [-58.388058, -16.877109], - [-58.24122, -16.299573], - [-60.15839, -16.258284], - [-60.542966, -15.09391], - [-60.251149, -15.077219], - [-60.264326, -14.645979], - [-60.459198, -14.354007], - [-60.503304, -13.775955], - [-61.084121, -13.479384], - [-61.713204, -13.489202], - [-62.127081, -13.198781], - [-62.80306, -13.000653], - [-63.196499, -12.627033], - [-64.316353, -12.461978], - [-65.402281, -11.56627], - [-65.321899, -10.895872], - [-65.444837, -10.511451], - [-65.338435, -9.761988], - [-66.646908, -9.931331], - [-67.173801, -10.306812], - [-68.048192, -10.712059], - [-68.271254, -11.014521], - [-68.786158, -11.03638], - [-69.529678, -10.951734], - [-70.093752, -11.123972], - [-70.548686, -11.009147], - [-70.481894, -9.490118], - [-71.302412, -10.079436], - [-72.184891, -10.053598], - [-72.563033, -9.520194], - [-73.226713, -9.462213], - [-73.015383, -9.032833], - [-73.571059, -8.424447], - [-73.987235, -7.52383], - [-73.723401, -7.340999], - [-73.724487, -6.918595], - [-73.120027, -6.629931], - [-73.219711, -6.089189], - [-72.964507, -5.741251], - [-72.891928, -5.274561], - [-71.748406, -4.593983], - [-70.928843, -4.401591], - [-70.794769, -4.251265], - [-69.893635, -4.298187], - [-69.444102, -1.556287], - [-69.420486, -1.122619], - [-69.577065, -0.549992], - [-70.020656, -0.185156], - [-70.015566, 0.541414], - [-69.452396, 0.706159], - [-69.252434, 0.602651], - [-69.218638, 0.985677], - [-69.804597, 1.089081], - [-69.816973, 1.714805], - [-67.868565, 1.692455], - [-67.53781, 2.037163], - [-67.259998, 1.719999], - [-67.065048, 1.130112], - [-66.876326, 1.253361], - [-66.325765, 0.724452], - [-65.548267, 0.789254], - [-65.354713, 1.095282], - [-64.611012, 1.328731], - [-64.199306, 1.492855], - [-64.083085, 1.916369], - [-63.368788, 2.2009], - [-63.422867, 2.411068], - [-64.269999, 2.497006], - [-64.408828, 3.126786], - [-64.368494, 3.79721], - [-64.816064, 4.056445], - [-64.628659, 4.148481], - [-63.888343, 4.02053], - [-63.093198, 3.770571], - [-62.804533, 4.006965], - [-62.08543, 4.162124], - [-60.966893, 4.536468], - [-60.601179, 4.918098], - [-60.733574, 5.200277], - [-60.213683, 5.244486], - [-59.980959, 5.014061], - [-60.111002, 4.574967], - [-59.767406, 4.423503], - [-59.53804, 3.958803], - [-59.815413, 3.606499], - [-59.974525, 2.755233], - [-59.718546, 2.24963], - [-59.646044, 1.786894], - [-59.030862, 1.317698], - [-58.540013, 1.268088], - [-58.429477, 1.463942], - [-58.11345, 1.507195], - [-57.660971, 1.682585], - [-57.335823, 1.948538], - [-56.782704, 1.863711], - [-56.539386, 1.899523], - [-55.995698, 1.817667], - [-55.9056, 2.021996], - [-56.073342, 2.220795], - [-55.973322, 2.510364], - [-55.569755, 2.421506], - [-55.097587, 2.523748], - [-54.524754, 2.311849], - [-54.088063, 2.105557], - [-53.778521, 2.376703], - [-53.554839, 2.334897], - [-53.418465, 2.053389], - [-52.939657, 2.124858], - [-52.556425, 2.504705], - [-52.249338, 3.241094], - [-51.657797, 4.156232], - [-51.317146, 4.203491], - [-51.069771, 3.650398], - [-50.508875, 1.901564], - [-49.974076, 1.736483], - [-49.947101, 1.04619], - [-50.699251, 0.222984], - [-50.388211, -0.078445], - [-48.620567, -0.235489], - [-48.584497, -1.237805], - [-47.824956, -0.581618], - [-46.566584, -0.941028], - [-44.905703, -1.55174], - [-44.417619, -2.13775], - [-44.581589, -2.691308], - [-43.418791, -2.38311], - [-41.472657, -2.912018], - [-39.978665, -2.873054], - [-38.500383, -3.700652], - [-37.223252, -4.820946], - [-36.452937, -5.109404], - [-35.597796, -5.149504], - [-35.235389, -5.464937], - [-34.89603, -6.738193], - [-34.729993, -7.343221], - [-35.128212, -8.996401], - [-35.636967, -9.649282], - [-37.046519, -11.040721], - [-37.683612, -12.171195], - [-38.423877, -13.038119], - [-38.673887, -13.057652], - [-38.953276, -13.79337], - [-38.882298, -15.667054], - [-39.161092, -17.208407], - [-39.267339, -17.867746], - [-39.583521, -18.262296], - [-39.760823, -19.599113], - [-40.774741, -20.904512], - [-40.944756, -21.937317], - [-41.754164, -22.370676], - [-41.988284, -22.97007], - [-43.074704, -22.967693], - [-44.647812, -23.351959], - [-45.352136, -23.796842], - [-46.472093, -24.088969], - [-47.648972, -24.885199], - [-48.495458, -25.877025], - [-48.641005, -26.623698], - [-48.474736, -27.175912], - [-48.66152, -28.186135], - [-48.888457, -28.674115], - [-49.587329, -29.224469], - [-50.696874, -30.984465], - [-51.576226, -31.777698], - [-52.256081, -32.24537], - [-52.7121, -33.196578], - [-53.373662, -33.768378], - [-53.650544, -33.202004], - [-53.209589, -32.727666], - [-53.787952, -32.047243], - [-54.572452, -31.494511], - [-55.60151, -30.853879], - [-55.973245, -30.883076], - [-56.976026, -30.109686], - [-57.625133, -30.216295] - ] - ] - }, - "id": "BRA" - }, - { - "type": "Feature", - "properties": { "name": "Brunei" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [114.204017, 4.525874], - [114.599961, 4.900011], - [115.45071, 5.44773], - [115.4057, 4.955228], - [115.347461, 4.316636], - [114.869557, 4.348314], - [114.659596, 4.007637], - [114.204017, 4.525874] - ] - ] - }, - "id": "BRN" - }, - { - "type": "Feature", - "properties": { "name": "Bhutan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [91.696657, 27.771742], - [92.103712, 27.452614], - [92.033484, 26.83831], - [91.217513, 26.808648], - [90.373275, 26.875724], - [89.744528, 26.719403], - [88.835643, 27.098966], - [88.814248, 27.299316], - [89.47581, 28.042759], - [90.015829, 28.296439], - [90.730514, 28.064954], - [91.258854, 28.040614], - [91.696657, 27.771742] - ] - ] - }, - "id": "BTN" - }, - { - "type": "Feature", - "properties": { "name": "Botswana" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [25.649163, -18.536026], - [25.850391, -18.714413], - [26.164791, -19.293086], - [27.296505, -20.39152], - [27.724747, -20.499059], - [27.727228, -20.851802], - [28.02137, -21.485975], - [28.794656, -21.639454], - [29.432188, -22.091313], - [28.017236, -22.827754], - [27.11941, -23.574323], - [26.786407, -24.240691], - [26.485753, -24.616327], - [25.941652, -24.696373], - [25.765849, -25.174845], - [25.664666, -25.486816], - [25.025171, -25.71967], - [24.211267, -25.670216], - [23.73357, -25.390129], - [23.312097, -25.26869], - [22.824271, -25.500459], - [22.579532, -25.979448], - [22.105969, -26.280256], - [21.605896, -26.726534], - [20.889609, -26.828543], - [20.66647, -26.477453], - [20.758609, -25.868136], - [20.165726, -24.917962], - [19.895768, -24.76779], - [19.895458, -21.849157], - [20.881134, -21.814327], - [20.910641, -18.252219], - [21.65504, -18.219146], - [23.196858, -17.869038], - [23.579006, -18.281261], - [24.217365, -17.889347], - [24.520705, -17.887125], - [25.084443, -17.661816], - [25.264226, -17.73654], - [25.649163, -18.536026] - ] - ] - }, - "id": "BWA" - }, - { - "type": "Feature", - "properties": { "name": "Central African Republic" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [15.27946, 7.421925], - [16.106232, 7.497088], - [16.290562, 7.754307], - [16.456185, 7.734774], - [16.705988, 7.508328], - [17.96493, 7.890914], - [18.389555, 8.281304], - [18.911022, 8.630895], - [18.81201, 8.982915], - [19.094008, 9.074847], - [20.059685, 9.012706], - [21.000868, 9.475985], - [21.723822, 10.567056], - [22.231129, 10.971889], - [22.864165, 11.142395], - [22.977544, 10.714463], - [23.554304, 10.089255], - [23.55725, 9.681218], - [23.394779, 9.265068], - [23.459013, 8.954286], - [23.805813, 8.666319], - [24.567369, 8.229188], - [25.114932, 7.825104], - [25.124131, 7.500085], - [25.796648, 6.979316], - [26.213418, 6.546603], - [26.465909, 5.946717], - [27.213409, 5.550953], - [27.374226, 5.233944], - [27.044065, 5.127853], - [26.402761, 5.150875], - [25.650455, 5.256088], - [25.278798, 5.170408], - [25.128833, 4.927245], - [24.805029, 4.897247], - [24.410531, 5.108784], - [23.297214, 4.609693], - [22.84148, 4.710126], - [22.704124, 4.633051], - [22.405124, 4.02916], - [21.659123, 4.224342], - [20.927591, 4.322786], - [20.290679, 4.691678], - [19.467784, 5.031528], - [18.932312, 4.709506], - [18.542982, 4.201785], - [18.453065, 3.504386], - [17.8099, 3.560196], - [17.133042, 3.728197], - [16.537058, 3.198255], - [16.012852, 2.26764], - [15.907381, 2.557389], - [15.862732, 3.013537], - [15.405396, 3.335301], - [15.03622, 3.851367], - [14.950953, 4.210389], - [14.478372, 4.732605], - [14.558936, 5.030598], - [14.459407, 5.451761], - [14.53656, 6.226959], - [14.776545, 6.408498], - [15.27946, 7.421925] - ] - ] - }, - "id": "CAF" - }, - { - "type": "Feature", - "properties": { "name": "Canada" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-63.6645, 46.55001], - [-62.9393, 46.41587], - [-62.01208, 46.44314], - [-62.50391, 46.03339], - [-62.87433, 45.96818], - [-64.1428, 46.39265], - [-64.39261, 46.72747], - [-64.01486, 47.03601], - [-63.6645, 46.55001] - ] - ], - [ - [ - [-61.806305, 49.10506], - [-62.29318, 49.08717], - [-63.58926, 49.40069], - [-64.51912, 49.87304], - [-64.17322, 49.95718], - [-62.85829, 49.70641], - [-61.835585, 49.28855], - [-61.806305, 49.10506] - ] - ], - [ - [ - [-123.510002, 48.510011], - [-124.012891, 48.370846], - [-125.655013, 48.825005], - [-125.954994, 49.179996], - [-126.850004, 49.53], - [-127.029993, 49.814996], - [-128.059336, 49.994959], - [-128.444584, 50.539138], - [-128.358414, 50.770648], - [-127.308581, 50.552574], - [-126.695001, 50.400903], - [-125.755007, 50.295018], - [-125.415002, 49.950001], - [-124.920768, 49.475275], - [-123.922509, 49.062484], - [-123.510002, 48.510011] - ] - ], - [ - [ - [-56.134036, 50.68701], - [-56.795882, 49.812309], - [-56.143105, 50.150117], - [-55.471492, 49.935815], - [-55.822401, 49.587129], - [-54.935143, 49.313011], - [-54.473775, 49.556691], - [-53.476549, 49.249139], - [-53.786014, 48.516781], - [-53.086134, 48.687804], - [-52.958648, 48.157164], - [-52.648099, 47.535548], - [-53.069158, 46.655499], - [-53.521456, 46.618292], - [-54.178936, 46.807066], - [-53.961869, 47.625207], - [-54.240482, 47.752279], - [-55.400773, 46.884994], - [-55.997481, 46.91972], - [-55.291219, 47.389562], - [-56.250799, 47.632545], - [-57.325229, 47.572807], - [-59.266015, 47.603348], - [-59.419494, 47.899454], - [-58.796586, 48.251525], - [-59.231625, 48.523188], - [-58.391805, 49.125581], - [-57.35869, 50.718274], - [-56.73865, 51.287438], - [-55.870977, 51.632094], - [-55.406974, 51.588273], - [-55.600218, 51.317075], - [-56.134036, 50.68701] - ] - ], - [ - [ - [-132.710008, 54.040009], - [-132.710009, 54.040009], - [-132.710008, 54.040009], - [-132.710008, 54.040009], - [-131.74999, 54.120004], - [-132.04948, 52.984621], - [-131.179043, 52.180433], - [-131.57783, 52.182371], - [-132.180428, 52.639707], - [-132.549992, 53.100015], - [-133.054611, 53.411469], - [-133.239664, 53.85108], - [-133.180004, 54.169975], - [-132.710008, 54.040009] - ] - ], - [ - [ - [-79.26582, 62.158675], - [-79.65752, 61.63308], - [-80.09956, 61.7181], - [-80.36215, 62.01649], - [-80.315395, 62.085565], - [-79.92939, 62.3856], - [-79.52002, 62.36371], - [-79.26582, 62.158675] - ] - ], - [ - [ - [-81.89825, 62.7108], - [-83.06857, 62.15922], - [-83.77462, 62.18231], - [-83.99367, 62.4528], - [-83.25048, 62.91409], - [-81.87699, 62.90458], - [-81.89825, 62.7108] - ] - ], - [ - [ - [-85.161308, 65.657285], - [-84.975764, 65.217518], - [-84.464012, 65.371772], - [-83.882626, 65.109618], - [-82.787577, 64.766693], - [-81.642014, 64.455136], - [-81.55344, 63.979609], - [-80.817361, 64.057486], - [-80.103451, 63.725981], - [-80.99102, 63.411246], - [-82.547178, 63.651722], - [-83.108798, 64.101876], - [-84.100417, 63.569712], - [-85.523405, 63.052379], - [-85.866769, 63.637253], - [-87.221983, 63.541238], - [-86.35276, 64.035833], - [-86.224886, 64.822917], - [-85.883848, 65.738778], - [-85.161308, 65.657285] - ] - ], - [ - [ - [-75.86588, 67.14886], - [-76.98687, 67.09873], - [-77.2364, 67.58809], - [-76.81166, 68.14856], - [-75.89521, 68.28721], - [-75.1145, 68.01036], - [-75.10333, 67.58202], - [-75.21597, 67.44425], - [-75.86588, 67.14886] - ] - ], - [ - [ - [-95.647681, 69.10769], - [-96.269521, 68.75704], - [-97.617401, 69.06003], - [-98.431801, 68.9507], - [-99.797401, 69.40003], - [-98.917401, 69.71003], - [-98.218261, 70.14354], - [-97.157401, 69.86003], - [-96.557401, 69.68003], - [-96.257401, 69.49003], - [-95.647681, 69.10769] - ] - ], - [ - [ - [-90.5471, 69.49766], - [-90.55151, 68.47499], - [-89.21515, 69.25873], - [-88.01966, 68.61508], - [-88.31749, 67.87338], - [-87.35017, 67.19872], - [-86.30607, 67.92146], - [-85.57664, 68.78456], - [-85.52197, 69.88211], - [-84.10081, 69.80539], - [-82.62258, 69.65826], - [-81.28043, 69.16202], - [-81.2202, 68.66567], - [-81.96436, 68.13253], - [-81.25928, 67.59716], - [-81.38653, 67.11078], - [-83.34456, 66.41154], - [-84.73542, 66.2573], - [-85.76943, 66.55833], - [-86.0676, 66.05625], - [-87.03143, 65.21297], - [-87.32324, 64.77563], - [-88.48296, 64.09897], - [-89.91444, 64.03273], - [-90.70398, 63.61017], - [-90.77004, 62.96021], - [-91.93342, 62.83508], - [-93.15698, 62.02469], - [-94.24153, 60.89865], - [-94.62931, 60.11021], - [-94.6846, 58.94882], - [-93.21502, 58.78212], - [-92.76462, 57.84571], - [-92.29703, 57.08709], - [-90.89769, 57.28468], - [-89.03953, 56.85172], - [-88.03978, 56.47162], - [-87.32421, 55.99914], - [-86.07121, 55.72383], - [-85.01181, 55.3026], - [-83.36055, 55.24489], - [-82.27285, 55.14832], - [-82.4362, 54.28227], - [-82.12502, 53.27703], - [-81.40075, 52.15788], - [-79.91289, 51.20842], - [-79.14301, 51.53393], - [-78.60191, 52.56208], - [-79.12421, 54.14145], - [-79.82958, 54.66772], - [-78.22874, 55.13645], - [-77.0956, 55.83741], - [-76.54137, 56.53423], - [-76.62319, 57.20263], - [-77.30226, 58.05209], - [-78.51688, 58.80458], - [-77.33676, 59.85261], - [-77.77272, 60.75788], - [-78.10687, 62.31964], - [-77.41067, 62.55053], - [-75.69621, 62.2784], - [-74.6682, 62.18111], - [-73.83988, 62.4438], - [-72.90853, 62.10507], - [-71.67708, 61.52535], - [-71.37369, 61.13717], - [-69.59042, 61.06141], - [-69.62033, 60.22125], - [-69.2879, 58.95736], - [-68.37455, 58.80106], - [-67.64976, 58.21206], - [-66.20178, 58.76731], - [-65.24517, 59.87071], - [-64.58352, 60.33558], - [-63.80475, 59.4426], - [-62.50236, 58.16708], - [-61.39655, 56.96745], - [-61.79866, 56.33945], - [-60.46853, 55.77548], - [-59.56962, 55.20407], - [-57.97508, 54.94549], - [-57.3332, 54.6265], - [-56.93689, 53.78032], - [-56.15811, 53.64749], - [-55.75632, 53.27036], - [-55.68338, 52.14664], - [-56.40916, 51.7707], - [-57.12691, 51.41972], - [-58.77482, 51.0643], - [-60.03309, 50.24277], - [-61.72366, 50.08046], - [-63.86251, 50.29099], - [-65.36331, 50.2982], - [-66.39905, 50.22897], - [-67.23631, 49.51156], - [-68.51114, 49.06836], - [-69.95362, 47.74488], - [-71.10458, 46.82171], - [-70.25522, 46.98606], - [-68.65, 48.3], - [-66.55243, 49.1331], - [-65.05626, 49.23278], - [-64.17099, 48.74248], - [-65.11545, 48.07085], - [-64.79854, 46.99297], - [-64.47219, 46.23849], - [-63.17329, 45.73902], - [-61.52072, 45.88377], - [-60.51815, 47.00793], - [-60.4486, 46.28264], - [-59.80287, 45.9204], - [-61.03988, 45.26525], - [-63.25471, 44.67014], - [-64.24656, 44.26553], - [-65.36406, 43.54523], - [-66.1234, 43.61867], - [-66.16173, 44.46512], - [-64.42549, 45.29204], - [-66.02605, 45.25931], - [-67.13741, 45.13753], - [-67.79134, 45.70281], - [-67.79046, 47.06636], - [-68.23444, 47.35486], - [-68.905, 47.185], - [-69.237216, 47.447781], - [-69.99997, 46.69307], - [-70.305, 45.915], - [-70.66, 45.46], - [-71.08482, 45.30524], - [-71.405, 45.255], - [-71.50506, 45.0082], - [-73.34783, 45.00738], - [-74.867, 45.00048], - [-75.31821, 44.81645], - [-76.375, 44.09631], - [-76.5, 44.018459], - [-76.820034, 43.628784], - [-77.737885, 43.629056], - [-78.72028, 43.625089], - [-79.171674, 43.466339], - [-79.01, 43.27], - [-78.92, 42.965], - [-78.939362, 42.863611], - [-80.247448, 42.3662], - [-81.277747, 42.209026], - [-82.439278, 41.675105], - [-82.690089, 41.675105], - [-83.02981, 41.832796], - [-83.142, 41.975681], - [-83.12, 42.08], - [-82.9, 42.43], - [-82.43, 42.98], - [-82.137642, 43.571088], - [-82.337763, 44.44], - [-82.550925, 45.347517], - [-83.592851, 45.816894], - [-83.469551, 45.994686], - [-83.616131, 46.116927], - [-83.890765, 46.116927], - [-84.091851, 46.275419], - [-84.14212, 46.512226], - [-84.3367, 46.40877], - [-84.6049, 46.4396], - [-84.543749, 46.538684], - [-84.779238, 46.637102], - [-84.87608, 46.900083], - [-85.652363, 47.220219], - [-86.461991, 47.553338], - [-87.439793, 47.94], - [-88.378114, 48.302918], - [-89.272917, 48.019808], - [-89.6, 48.01], - [-90.83, 48.27], - [-91.64, 48.14], - [-92.61, 48.45], - [-93.63087, 48.60926], - [-94.32914, 48.67074], - [-94.64, 48.84], - [-94.81758, 49.38905], - [-95.15609, 49.38425], - [-95.15907, 49], - [-97.22872, 49.0007], - [-100.65, 49], - [-104.04826, 48.99986], - [-107.05, 49], - [-110.05, 49], - [-113, 49], - [-116.04818, 49], - [-117.03121, 49], - [-120, 49], - [-122.84, 49], - [-122.97421, 49.002538], - [-124.91024, 49.98456], - [-125.62461, 50.41656], - [-127.43561, 50.83061], - [-127.99276, 51.71583], - [-127.85032, 52.32961], - [-129.12979, 52.75538], - [-129.30523, 53.56159], - [-130.51497, 54.28757], - [-130.53611, 54.80278], - [-129.98, 55.285], - [-130.00778, 55.91583], - [-131.70781, 56.55212], - [-132.73042, 57.69289], - [-133.35556, 58.41028], - [-134.27111, 58.86111], - [-134.945, 59.27056], - [-135.47583, 59.78778], - [-136.47972, 59.46389], - [-137.4525, 58.905], - [-138.34089, 59.56211], - [-139.039, 60], - [-140.013, 60.27682], - [-140.99778, 60.30639], - [-140.9925, 66.00003], - [-140.986, 69.712], - [-139.12052, 69.47102], - [-137.54636, 68.99002], - [-136.50358, 68.89804], - [-135.62576, 69.31512], - [-134.41464, 69.62743], - [-132.92925, 69.50534], - [-131.43136, 69.94451], - [-129.79471, 70.19369], - [-129.10773, 69.77927], - [-128.36156, 70.01286], - [-128.13817, 70.48384], - [-127.44712, 70.37721], - [-125.75632, 69.48058], - [-124.42483, 70.1584], - [-124.28968, 69.39969], - [-123.06108, 69.56372], - [-122.6835, 69.85553], - [-121.47226, 69.79778], - [-119.94288, 69.37786], - [-117.60268, 69.01128], - [-116.22643, 68.84151], - [-115.2469, 68.90591], - [-113.89794, 68.3989], - [-115.30489, 67.90261], - [-113.49727, 67.68815], - [-110.798, 67.80612], - [-109.94619, 67.98104], - [-108.8802, 67.38144], - [-107.79239, 67.88736], - [-108.81299, 68.31164], - [-108.16721, 68.65392], - [-106.95, 68.7], - [-106.15, 68.8], - [-105.34282, 68.56122], - [-104.33791, 68.018], - [-103.22115, 68.09775], - [-101.45433, 67.64689], - [-99.90195, 67.80566], - [-98.4432, 67.78165], - [-98.5586, 68.40394], - [-97.66948, 68.57864], - [-96.11991, 68.23939], - [-96.12588, 67.29338], - [-95.48943, 68.0907], - [-94.685, 68.06383], - [-94.23282, 69.06903], - [-95.30408, 69.68571], - [-96.47131, 70.08976], - [-96.39115, 71.19482], - [-95.2088, 71.92053], - [-93.88997, 71.76015], - [-92.87818, 71.31869], - [-91.51964, 70.19129], - [-92.40692, 69.69997], - [-90.5471, 69.49766] - ] - ], - [ - [ - [-114.16717, 73.12145], - [-114.66634, 72.65277], - [-112.44102, 72.9554], - [-111.05039, 72.4504], - [-109.92035, 72.96113], - [-109.00654, 72.63335], - [-108.18835, 71.65089], - [-107.68599, 72.06548], - [-108.39639, 73.08953], - [-107.51645, 73.23598], - [-106.52259, 73.07601], - [-105.40246, 72.67259], - [-104.77484, 71.6984], - [-104.46476, 70.99297], - [-102.78537, 70.49776], - [-100.98078, 70.02432], - [-101.08929, 69.58447], - [-102.73116, 69.50402], - [-102.09329, 69.11962], - [-102.43024, 68.75282], - [-104.24, 68.91], - [-105.96, 69.18], - [-107.12254, 69.11922], - [-109, 68.78], - [-111.534149, 68.630059], - [-113.3132, 68.53554], - [-113.85496, 69.00744], - [-115.22, 69.28], - [-116.10794, 69.16821], - [-117.34, 69.96], - [-116.67473, 70.06655], - [-115.13112, 70.2373], - [-113.72141, 70.19237], - [-112.4161, 70.36638], - [-114.35, 70.6], - [-116.48684, 70.52045], - [-117.9048, 70.54056], - [-118.43238, 70.9092], - [-116.11311, 71.30918], - [-117.65568, 71.2952], - [-119.40199, 71.55859], - [-118.56267, 72.30785], - [-117.86642, 72.70594], - [-115.18909, 73.31459], - [-114.16717, 73.12145] - ] - ], - [ - [ - [-104.5, 73.42], - [-105.38, 72.76], - [-106.94, 73.46], - [-106.6, 73.6], - [-105.26, 73.64], - [-104.5, 73.42] - ] - ], - [ - [ - [-76.34, 73.102685], - [-76.251404, 72.826385], - [-77.314438, 72.855545], - [-78.39167, 72.876656], - [-79.486252, 72.742203], - [-79.775833, 72.802902], - [-80.876099, 73.333183], - [-80.833885, 73.693184], - [-80.353058, 73.75972], - [-78.064438, 73.651932], - [-76.34, 73.102685] - ] - ], - [ - [ - [-86.562179, 73.157447], - [-85.774371, 72.534126], - [-84.850112, 73.340278], - [-82.31559, 73.750951], - [-80.600088, 72.716544], - [-80.748942, 72.061907], - [-78.770639, 72.352173], - [-77.824624, 72.749617], - [-75.605845, 72.243678], - [-74.228616, 71.767144], - [-74.099141, 71.33084], - [-72.242226, 71.556925], - [-71.200015, 70.920013], - [-68.786054, 70.525024], - [-67.91497, 70.121948], - [-66.969033, 69.186087], - [-68.805123, 68.720198], - [-66.449866, 68.067163], - [-64.862314, 67.847539], - [-63.424934, 66.928473], - [-61.851981, 66.862121], - [-62.163177, 66.160251], - [-63.918444, 64.998669], - [-65.14886, 65.426033], - [-66.721219, 66.388041], - [-68.015016, 66.262726], - [-68.141287, 65.689789], - [-67.089646, 65.108455], - [-65.73208, 64.648406], - [-65.320168, 64.382737], - [-64.669406, 63.392927], - [-65.013804, 62.674185], - [-66.275045, 62.945099], - [-68.783186, 63.74567], - [-67.369681, 62.883966], - [-66.328297, 62.280075], - [-66.165568, 61.930897], - [-68.877367, 62.330149], - [-71.023437, 62.910708], - [-72.235379, 63.397836], - [-71.886278, 63.679989], - [-73.378306, 64.193963], - [-74.834419, 64.679076], - [-74.818503, 64.389093], - [-77.70998, 64.229542], - [-78.555949, 64.572906], - [-77.897281, 65.309192], - [-76.018274, 65.326969], - [-73.959795, 65.454765], - [-74.293883, 65.811771], - [-73.944912, 66.310578], - [-72.651167, 67.284576], - [-72.92606, 67.726926], - [-73.311618, 68.069437], - [-74.843307, 68.554627], - [-76.869101, 68.894736], - [-76.228649, 69.147769], - [-77.28737, 69.76954], - [-78.168634, 69.826488], - [-78.957242, 70.16688], - [-79.492455, 69.871808], - [-81.305471, 69.743185], - [-84.944706, 69.966634], - [-87.060003, 70.260001], - [-88.681713, 70.410741], - [-89.51342, 70.762038], - [-88.467721, 71.218186], - [-89.888151, 71.222552], - [-90.20516, 72.235074], - [-89.436577, 73.129464], - [-88.408242, 73.537889], - [-85.826151, 73.803816], - [-86.562179, 73.157447] - ] - ], - [ - [ - [-100.35642, 73.84389], - [-99.16387, 73.63339], - [-97.38, 73.76], - [-97.12, 73.47], - [-98.05359, 72.99052], - [-96.54, 72.56], - [-96.72, 71.66], - [-98.35966, 71.27285], - [-99.32286, 71.35639], - [-100.01482, 71.73827], - [-102.5, 72.51], - [-102.48, 72.83], - [-100.43836, 72.70588], - [-101.54, 73.36], - [-100.35642, 73.84389] - ] - ], - [ - [ - [-93.196296, 72.771992], - [-94.269047, 72.024596], - [-95.409856, 72.061881], - [-96.033745, 72.940277], - [-96.018268, 73.43743], - [-95.495793, 73.862417], - [-94.503658, 74.134907], - [-92.420012, 74.100025], - [-90.509793, 73.856732], - [-92.003965, 72.966244], - [-93.196296, 72.771992] - ] - ], - [ - [ - [-120.46, 71.383602], - [-123.09219, 70.90164], - [-123.62, 71.34], - [-125.928949, 71.868688], - [-125.5, 72.292261], - [-124.80729, 73.02256], - [-123.94, 73.68], - [-124.91775, 74.29275], - [-121.53788, 74.44893], - [-120.10978, 74.24135], - [-117.55564, 74.18577], - [-116.58442, 73.89607], - [-115.51081, 73.47519], - [-116.76794, 73.22292], - [-119.22, 72.52], - [-120.46, 71.82], - [-120.46, 71.383602] - ] - ], - [ - [ - [-93.612756, 74.979997], - [-94.156909, 74.592347], - [-95.608681, 74.666864], - [-96.820932, 74.927623], - [-96.288587, 75.377828], - [-94.85082, 75.647218], - [-93.977747, 75.29649], - [-93.612756, 74.979997] - ] - ], - [ - [ - [-98.5, 76.72], - [-97.735585, 76.25656], - [-97.704415, 75.74344], - [-98.16, 75], - [-99.80874, 74.89744], - [-100.88366, 75.05736], - [-100.86292, 75.64075], - [-102.50209, 75.5638], - [-102.56552, 76.3366], - [-101.48973, 76.30537], - [-99.98349, 76.64634], - [-98.57699, 76.58859], - [-98.5, 76.72] - ] - ], - [ - [ - [-108.21141, 76.20168], - [-107.81943, 75.84552], - [-106.92893, 76.01282], - [-105.881, 75.9694], - [-105.70498, 75.47951], - [-106.31347, 75.00527], - [-109.7, 74.85], - [-112.22307, 74.41696], - [-113.74381, 74.39427], - [-113.87135, 74.72029], - [-111.79421, 75.1625], - [-116.31221, 75.04343], - [-117.7104, 75.2222], - [-116.34602, 76.19903], - [-115.40487, 76.47887], - [-112.59056, 76.14134], - [-110.81422, 75.54919], - [-109.0671, 75.47321], - [-110.49726, 76.42982], - [-109.5811, 76.79417], - [-108.54859, 76.67832], - [-108.21141, 76.20168] - ] - ], - [ - [ - [-94.684086, 77.097878], - [-93.573921, 76.776296], - [-91.605023, 76.778518], - [-90.741846, 76.449597], - [-90.969661, 76.074013], - [-89.822238, 75.847774], - [-89.187083, 75.610166], - [-87.838276, 75.566189], - [-86.379192, 75.482421], - [-84.789625, 75.699204], - [-82.753445, 75.784315], - [-81.128531, 75.713983], - [-80.057511, 75.336849], - [-79.833933, 74.923127], - [-80.457771, 74.657304], - [-81.948843, 74.442459], - [-83.228894, 74.564028], - [-86.097452, 74.410032], - [-88.15035, 74.392307], - [-89.764722, 74.515555], - [-92.422441, 74.837758], - [-92.768285, 75.38682], - [-92.889906, 75.882655], - [-93.893824, 76.319244], - [-95.962457, 76.441381], - [-97.121379, 76.751078], - [-96.745123, 77.161389], - [-94.684086, 77.097878] - ] - ], - [ - [ - [-116.198587, 77.645287], - [-116.335813, 76.876962], - [-117.106051, 76.530032], - [-118.040412, 76.481172], - [-119.899318, 76.053213], - [-121.499995, 75.900019], - [-122.854924, 76.116543], - [-122.854925, 76.116543], - [-121.157535, 76.864508], - [-119.103939, 77.51222], - [-117.570131, 77.498319], - [-116.198587, 77.645287] - ] - ], - [ - [ - [-93.840003, 77.519997], - [-94.295608, 77.491343], - [-96.169654, 77.555111], - [-96.436304, 77.834629], - [-94.422577, 77.820005], - [-93.720656, 77.634331], - [-93.840003, 77.519997] - ] - ], - [ - [ - [-110.186938, 77.697015], - [-112.051191, 77.409229], - [-113.534279, 77.732207], - [-112.724587, 78.05105], - [-111.264443, 78.152956], - [-109.854452, 77.996325], - [-110.186938, 77.697015] - ] - ], - [ - [ - [-109.663146, 78.601973], - [-110.881314, 78.40692], - [-112.542091, 78.407902], - [-112.525891, 78.550555], - [-111.50001, 78.849994], - [-110.963661, 78.804441], - [-109.663146, 78.601973] - ] - ], - [ - [ - [-95.830295, 78.056941], - [-97.309843, 77.850597], - [-98.124289, 78.082857], - [-98.552868, 78.458105], - [-98.631984, 78.87193], - [-97.337231, 78.831984], - [-96.754399, 78.765813], - [-95.559278, 78.418315], - [-95.830295, 78.056941] - ] - ], - [ - [ - [-100.060192, 78.324754], - [-99.670939, 77.907545], - [-101.30394, 78.018985], - [-102.949809, 78.343229], - [-105.176133, 78.380332], - [-104.210429, 78.67742], - [-105.41958, 78.918336], - [-105.492289, 79.301594], - [-103.529282, 79.165349], - [-100.825158, 78.800462], - [-100.060192, 78.324754] - ] - ], - [ - [ - [-87.02, 79.66], - [-85.81435, 79.3369], - [-87.18756, 79.0393], - [-89.03535, 78.28723], - [-90.80436, 78.21533], - [-92.87669, 78.34333], - [-93.95116, 78.75099], - [-93.93574, 79.11373], - [-93.14524, 79.3801], - [-94.974, 79.37248], - [-96.07614, 79.70502], - [-96.70972, 80.15777], - [-96.01644, 80.60233], - [-95.32345, 80.90729], - [-94.29843, 80.97727], - [-94.73542, 81.20646], - [-92.40984, 81.25739], - [-91.13289, 80.72345], - [-89.45, 80.509322], - [-87.81, 80.32], - [-87.02, 79.66] - ] - ], - [ - [ - [-68.5, 83.106322], - [-65.82735, 83.02801], - [-63.68, 82.9], - [-61.85, 82.6286], - [-61.89388, 82.36165], - [-64.334, 81.92775], - [-66.75342, 81.72527], - [-67.65755, 81.50141], - [-65.48031, 81.50657], - [-67.84, 80.9], - [-69.4697, 80.61683], - [-71.18, 79.8], - [-73.2428, 79.63415], - [-73.88, 79.430162], - [-76.90773, 79.32309], - [-75.52924, 79.19766], - [-76.22046, 79.01907], - [-75.39345, 78.52581], - [-76.34354, 78.18296], - [-77.88851, 77.89991], - [-78.36269, 77.50859], - [-79.75951, 77.20968], - [-79.61965, 76.98336], - [-77.91089, 77.022045], - [-77.88911, 76.777955], - [-80.56125, 76.17812], - [-83.17439, 76.45403], - [-86.11184, 76.29901], - [-87.6, 76.42], - [-89.49068, 76.47239], - [-89.6161, 76.95213], - [-87.76739, 77.17833], - [-88.26, 77.9], - [-87.65, 77.970222], - [-84.97634, 77.53873], - [-86.34, 78.18], - [-87.96192, 78.37181], - [-87.15198, 78.75867], - [-85.37868, 78.9969], - [-85.09495, 79.34543], - [-86.50734, 79.73624], - [-86.93179, 80.25145], - [-84.19844, 80.20836], - [-83.408696, 80.1], - [-81.84823, 80.46442], - [-84.1, 80.58], - [-87.59895, 80.51627], - [-89.36663, 80.85569], - [-90.2, 81.26], - [-91.36786, 81.5531], - [-91.58702, 81.89429], - [-90.1, 82.085], - [-88.93227, 82.11751], - [-86.97024, 82.27961], - [-85.5, 82.652273], - [-84.260005, 82.6], - [-83.18, 82.32], - [-82.42, 82.86], - [-81.1, 83.02], - [-79.30664, 83.13056], - [-76.25, 83.172059], - [-75.71878, 83.06404], - [-72.83153, 83.23324], - [-70.665765, 83.169781], - [-68.5, 83.106322] - ] - ] - ] - }, - "id": "CAN" - }, - { - "type": "Feature", - "properties": { "name": "Switzerland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.594226, 47.525058], - [9.632932, 47.347601], - [9.47997, 47.10281], - [9.932448, 46.920728], - [10.442701, 46.893546], - [10.363378, 46.483571], - [9.922837, 46.314899], - [9.182882, 46.440215], - [8.966306, 46.036932], - [8.489952, 46.005151], - [8.31663, 46.163642], - [7.755992, 45.82449], - [7.273851, 45.776948], - [6.843593, 45.991147], - [6.5001, 46.429673], - [6.022609, 46.27299], - [6.037389, 46.725779], - [6.768714, 47.287708], - [6.736571, 47.541801], - [7.192202, 47.449766], - [7.466759, 47.620582], - [8.317301, 47.61358], - [8.522612, 47.830828], - [9.594226, 47.525058] - ] - ] - }, - "id": "CHE" - }, - { - "type": "Feature", - "properties": { "name": "Chile" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-68.63401, -52.63637], - [-68.63335, -54.8695], - [-67.56244, -54.87001], - [-66.95992, -54.89681], - [-67.29103, -55.30124], - [-68.14863, -55.61183], - [-68.639991, -55.580018], - [-69.2321, -55.49906], - [-69.95809, -55.19843], - [-71.00568, -55.05383], - [-72.2639, -54.49514], - [-73.2852, -53.95752], - [-74.66253, -52.83749], - [-73.8381, -53.04743], - [-72.43418, -53.7154], - [-71.10773, -54.07433], - [-70.59178, -53.61583], - [-70.26748, -52.93123], - [-69.34565, -52.5183], - [-68.63401, -52.63637] - ] - ], - [ - [ - [-68.219913, -21.494347], - [-67.82818, -22.872919], - [-67.106674, -22.735925], - [-66.985234, -22.986349], - [-67.328443, -24.025303], - [-68.417653, -24.518555], - [-68.386001, -26.185016], - [-68.5948, -26.506909], - [-68.295542, -26.89934], - [-69.001235, -27.521214], - [-69.65613, -28.459141], - [-70.01355, -29.367923], - [-69.919008, -30.336339], - [-70.535069, -31.36501], - [-70.074399, -33.09121], - [-69.814777, -33.273886], - [-69.817309, -34.193571], - [-70.388049, -35.169688], - [-70.364769, -36.005089], - [-71.121881, -36.658124], - [-71.118625, -37.576827], - [-70.814664, -38.552995], - [-71.413517, -38.916022], - [-71.680761, -39.808164], - [-71.915734, -40.832339], - [-71.746804, -42.051386], - [-72.148898, -42.254888], - [-71.915424, -43.408565], - [-71.464056, -43.787611], - [-71.793623, -44.207172], - [-71.329801, -44.407522], - [-71.222779, -44.784243], - [-71.659316, -44.973689], - [-71.552009, -45.560733], - [-71.917258, -46.884838], - [-72.447355, -47.738533], - [-72.331161, -48.244238], - [-72.648247, -48.878618], - [-73.415436, -49.318436], - [-73.328051, -50.378785], - [-72.975747, -50.74145], - [-72.309974, -50.67701], - [-72.329404, -51.425956], - [-71.914804, -52.009022], - [-69.498362, -52.142761], - [-68.571545, -52.299444], - [-69.461284, -52.291951], - [-69.94278, -52.537931], - [-70.845102, -52.899201], - [-71.006332, -53.833252], - [-71.429795, -53.856455], - [-72.557943, -53.53141], - [-73.702757, -52.835069], - [-73.702757, -52.83507], - [-74.946763, -52.262754], - [-75.260026, -51.629355], - [-74.976632, -51.043396], - [-75.479754, -50.378372], - [-75.608015, -48.673773], - [-75.18277, -47.711919], - [-74.126581, -46.939253], - [-75.644395, -46.647643], - [-74.692154, -45.763976], - [-74.351709, -44.103044], - [-73.240356, -44.454961], - [-72.717804, -42.383356], - [-73.3889, -42.117532], - [-73.701336, -43.365776], - [-74.331943, -43.224958], - [-74.017957, -41.794813], - [-73.677099, -39.942213], - [-73.217593, -39.258689], - [-73.505559, -38.282883], - [-73.588061, -37.156285], - [-73.166717, -37.12378], - [-72.553137, -35.50884], - [-71.861732, -33.909093], - [-71.43845, -32.418899], - [-71.668721, -30.920645], - [-71.370083, -30.095682], - [-71.489894, -28.861442], - [-70.905124, -27.64038], - [-70.724954, -25.705924], - [-70.403966, -23.628997], - [-70.091246, -21.393319], - [-70.16442, -19.756468], - [-70.372572, -18.347975], - [-69.858444, -18.092694], - [-69.590424, -17.580012], - [-69.100247, -18.260125], - [-68.966818, -18.981683], - [-68.442225, -19.405068], - [-68.757167, -20.372658], - [-68.219913, -21.494347] - ] - ] - ] - }, - "id": "CHL" - }, - { - "type": "Feature", - "properties": { "name": "China" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [110.339188, 18.678395], - [109.47521, 18.197701], - [108.655208, 18.507682], - [108.626217, 19.367888], - [109.119056, 19.821039], - [110.211599, 20.101254], - [110.786551, 20.077534], - [111.010051, 19.69593], - [110.570647, 19.255879], - [110.339188, 18.678395] - ] - ], - [ - [ - [127.657407, 49.76027], - [129.397818, 49.4406], - [130.582293, 48.729687], - [130.987282, 47.790132], - [132.506672, 47.78897], - [133.373596, 48.183442], - [135.026311, 48.47823], - [134.500814, 47.57844], - [134.112362, 47.212467], - [133.769644, 46.116927], - [133.097127, 45.144066], - [131.883454, 45.321162], - [131.025212, 44.967953], - [131.288555, 44.11152], - [131.144688, 42.92999], - [130.633866, 42.903015], - [130.640016, 42.395009], - [129.994267, 42.985387], - [129.596669, 42.424982], - [128.052215, 41.994285], - [128.208433, 41.466772], - [127.343783, 41.503152], - [126.869083, 41.816569], - [126.182045, 41.107336], - [125.079942, 40.569824], - [124.265625, 39.928493], - [122.86757, 39.637788], - [122.131388, 39.170452], - [121.054554, 38.897471], - [121.585995, 39.360854], - [121.376757, 39.750261], - [122.168595, 40.422443], - [121.640359, 40.94639], - [120.768629, 40.593388], - [119.639602, 39.898056], - [119.023464, 39.252333], - [118.042749, 39.204274], - [117.532702, 38.737636], - [118.059699, 38.061476], - [118.87815, 37.897325], - [118.911636, 37.448464], - [119.702802, 37.156389], - [120.823457, 37.870428], - [121.711259, 37.481123], - [122.357937, 37.454484], - [122.519995, 36.930614], - [121.104164, 36.651329], - [120.637009, 36.11144], - [119.664562, 35.609791], - [119.151208, 34.909859], - [120.227525, 34.360332], - [120.620369, 33.376723], - [121.229014, 32.460319], - [121.908146, 31.692174], - [121.891919, 30.949352], - [121.264257, 30.676267], - [121.503519, 30.142915], - [122.092114, 29.83252], - [121.938428, 29.018022], - [121.684439, 28.225513], - [121.125661, 28.135673], - [120.395473, 27.053207], - [119.585497, 25.740781], - [118.656871, 24.547391], - [117.281606, 23.624501], - [115.890735, 22.782873], - [114.763827, 22.668074], - [114.152547, 22.22376], - [113.80678, 22.54834], - [113.241078, 22.051367], - [111.843592, 21.550494], - [110.785466, 21.397144], - [110.444039, 20.341033], - [109.889861, 20.282457], - [109.627655, 21.008227], - [109.864488, 21.395051], - [108.522813, 21.715212], - [108.05018, 21.55238], - [107.04342, 21.811899], - [106.567273, 22.218205], - [106.725403, 22.794268], - [105.811247, 22.976892], - [105.329209, 23.352063], - [104.476858, 22.81915], - [103.504515, 22.703757], - [102.706992, 22.708795], - [102.170436, 22.464753], - [101.652018, 22.318199], - [101.80312, 21.174367], - [101.270026, 21.201652], - [101.180005, 21.436573], - [101.150033, 21.849984], - [100.416538, 21.558839], - [99.983489, 21.742937], - [99.240899, 22.118314], - [99.531992, 22.949039], - [98.898749, 23.142722], - [98.660262, 24.063286], - [97.60472, 23.897405], - [97.724609, 25.083637], - [98.671838, 25.918703], - [98.712094, 26.743536], - [98.68269, 27.508812], - [98.246231, 27.747221], - [97.911988, 28.335945], - [97.327114, 28.261583], - [96.248833, 28.411031], - [96.586591, 28.83098], - [96.117679, 29.452802], - [95.404802, 29.031717], - [94.56599, 29.277438], - [93.413348, 28.640629], - [92.503119, 27.896876], - [91.696657, 27.771742], - [91.258854, 28.040614], - [90.730514, 28.064954], - [90.015829, 28.296439], - [89.47581, 28.042759], - [88.814248, 27.299316], - [88.730326, 28.086865], - [88.120441, 27.876542], - [86.954517, 27.974262], - [85.82332, 28.203576], - [85.011638, 28.642774], - [84.23458, 28.839894], - [83.898993, 29.320226], - [83.337115, 29.463732], - [82.327513, 30.115268], - [81.525804, 30.422717], - [81.111256, 30.183481], - [79.721367, 30.882715], - [78.738894, 31.515906], - [78.458446, 32.618164], - [79.176129, 32.48378], - [79.208892, 32.994395], - [78.811086, 33.506198], - [78.912269, 34.321936], - [77.837451, 35.49401], - [76.192848, 35.898403], - [75.896897, 36.666806], - [75.158028, 37.133031], - [74.980002, 37.41999], - [74.829986, 37.990007], - [74.864816, 38.378846], - [74.257514, 38.606507], - [73.928852, 38.505815], - [73.675379, 39.431237], - [73.960013, 39.660008], - [73.822244, 39.893973], - [74.776862, 40.366425], - [75.467828, 40.562072], - [76.526368, 40.427946], - [76.904484, 41.066486], - [78.187197, 41.185316], - [78.543661, 41.582243], - [80.11943, 42.123941], - [80.25999, 42.349999], - [80.18015, 42.920068], - [80.866206, 43.180362], - [79.966106, 44.917517], - [81.947071, 45.317027], - [82.458926, 45.53965], - [83.180484, 47.330031], - [85.16429, 47.000956], - [85.720484, 47.452969], - [85.768233, 48.455751], - [86.598776, 48.549182], - [87.35997, 49.214981], - [87.751264, 49.297198], - [88.013832, 48.599463], - [88.854298, 48.069082], - [90.280826, 47.693549], - [90.970809, 46.888146], - [90.585768, 45.719716], - [90.94554, 45.286073], - [92.133891, 45.115076], - [93.480734, 44.975472], - [94.688929, 44.352332], - [95.306875, 44.241331], - [95.762455, 43.319449], - [96.349396, 42.725635], - [97.451757, 42.74889], - [99.515817, 42.524691], - [100.845866, 42.663804], - [101.83304, 42.514873], - [103.312278, 41.907468], - [104.522282, 41.908347], - [104.964994, 41.59741], - [106.129316, 42.134328], - [107.744773, 42.481516], - [109.243596, 42.519446], - [110.412103, 42.871234], - [111.129682, 43.406834], - [111.829588, 43.743118], - [111.667737, 44.073176], - [111.348377, 44.457442], - [111.873306, 45.102079], - [112.436062, 45.011646], - [113.463907, 44.808893], - [114.460332, 45.339817], - [115.985096, 45.727235], - [116.717868, 46.388202], - [117.421701, 46.672733], - [118.874326, 46.805412], - [119.66327, 46.69268], - [119.772824, 47.048059], - [118.866574, 47.74706], - [118.064143, 48.06673], - [117.295507, 47.697709], - [116.308953, 47.85341], - [115.742837, 47.726545], - [115.485282, 48.135383], - [116.191802, 49.134598], - [116.678801, 49.888531], - [117.879244, 49.510983], - [119.288461, 50.142883], - [119.279366, 50.582908], - [120.18205, 51.643566], - [120.738191, 51.964115], - [120.725789, 52.516226], - [120.177089, 52.753886], - [121.003085, 53.251401], - [122.245748, 53.431726], - [123.571507, 53.458804], - [125.068211, 53.161045], - [125.946349, 52.792799], - [126.564399, 51.784255], - [126.939157, 51.353894], - [127.287456, 50.739797], - [127.657407, 49.76027] - ] - ] - ] - }, - "id": "CHN" - }, - { - "type": "Feature", - "properties": { "name": "Ivory Coast" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-2.856125, 4.994476], - [-3.311084, 4.984296], - [-4.00882, 5.179813], - [-4.649917, 5.168264], - [-5.834496, 4.993701], - [-6.528769, 4.705088], - [-7.518941, 4.338288], - [-7.712159, 4.364566], - [-7.635368, 5.188159], - [-7.539715, 5.313345], - [-7.570153, 5.707352], - [-7.993693, 6.12619], - [-8.311348, 6.193033], - [-8.60288, 6.467564], - [-8.385452, 6.911801], - [-8.485446, 7.395208], - [-8.439298, 7.686043], - [-8.280703, 7.68718], - [-8.221792, 8.123329], - [-8.299049, 8.316444], - [-8.203499, 8.455453], - [-7.8321, 8.575704], - [-8.079114, 9.376224], - [-8.309616, 9.789532], - [-8.229337, 10.12902], - [-8.029944, 10.206535], - [-7.89959, 10.297382], - [-7.622759, 10.147236], - [-6.850507, 10.138994], - [-6.666461, 10.430811], - [-6.493965, 10.411303], - [-6.205223, 10.524061], - [-6.050452, 10.096361], - [-5.816926, 10.222555], - [-5.404342, 10.370737], - [-4.954653, 10.152714], - [-4.779884, 9.821985], - [-4.330247, 9.610835], - [-3.980449, 9.862344], - [-3.511899, 9.900326], - [-2.827496, 9.642461], - [-2.56219, 8.219628], - [-2.983585, 7.379705], - [-3.24437, 6.250472], - [-2.810701, 5.389051], - [-2.856125, 4.994476] - ] - ] - }, - "id": "CIV" - }, - { - "type": "Feature", - "properties": { "name": "Cameroon" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [13.075822, 2.267097], - [12.951334, 2.321616], - [12.35938, 2.192812], - [11.751665, 2.326758], - [11.276449, 2.261051], - [9.649158, 2.283866], - [9.795196, 3.073404], - [9.404367, 3.734527], - [8.948116, 3.904129], - [8.744924, 4.352215], - [8.488816, 4.495617], - [8.500288, 4.771983], - [8.757533, 5.479666], - [9.233163, 6.444491], - [9.522706, 6.453482], - [10.118277, 7.03877], - [10.497375, 7.055358], - [11.058788, 6.644427], - [11.745774, 6.981383], - [11.839309, 7.397042], - [12.063946, 7.799808], - [12.218872, 8.305824], - [12.753672, 8.717763], - [12.955468, 9.417772], - [13.1676, 9.640626], - [13.308676, 10.160362], - [13.57295, 10.798566], - [14.415379, 11.572369], - [14.468192, 11.904752], - [14.577178, 12.085361], - [14.181336, 12.483657], - [14.213531, 12.802035], - [14.495787, 12.859396], - [14.893386, 12.219048], - [14.960152, 11.555574], - [14.923565, 10.891325], - [15.467873, 9.982337], - [14.909354, 9.992129], - [14.627201, 9.920919], - [14.171466, 10.021378], - [13.954218, 9.549495], - [14.544467, 8.965861], - [14.979996, 8.796104], - [15.120866, 8.38215], - [15.436092, 7.692812], - [15.27946, 7.421925], - [14.776545, 6.408498], - [14.53656, 6.226959], - [14.459407, 5.451761], - [14.558936, 5.030598], - [14.478372, 4.732605], - [14.950953, 4.210389], - [15.03622, 3.851367], - [15.405396, 3.335301], - [15.862732, 3.013537], - [15.907381, 2.557389], - [16.012852, 2.26764], - [15.940919, 1.727673], - [15.146342, 1.964015], - [14.337813, 2.227875], - [13.075822, 2.267097] - ] - ] - }, - "id": "CMR" - }, - { - "type": "Feature", - "properties": { "name": "Democratic Republic of the Congo" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [30.83386, 3.509166], - [30.773347, 2.339883], - [31.174149, 2.204465], - [30.85267, 1.849396], - [30.468508, 1.583805], - [30.086154, 1.062313], - [29.875779, 0.59738], - [29.819503, -0.20531], - [29.587838, -0.587406], - [29.579466, -1.341313], - [29.291887, -1.620056], - [29.254835, -2.21511], - [29.117479, -2.292211], - [29.024926, -2.839258], - [29.276384, -3.293907], - [29.339998, -4.499983], - [29.519987, -5.419979], - [29.419993, -5.939999], - [29.620032, -6.520015], - [30.199997, -7.079981], - [30.740015, -8.340007], - [30.346086, -8.238257], - [29.002912, -8.407032], - [28.734867, -8.526559], - [28.449871, -9.164918], - [28.673682, -9.605925], - [28.49607, -10.789884], - [28.372253, -11.793647], - [28.642417, -11.971569], - [29.341548, -12.360744], - [29.616001, -12.178895], - [29.699614, -13.257227], - [28.934286, -13.248958], - [28.523562, -12.698604], - [28.155109, -12.272481], - [27.388799, -12.132747], - [27.16442, -11.608748], - [26.553088, -11.92444], - [25.75231, -11.784965], - [25.418118, -11.330936], - [24.78317, -11.238694], - [24.314516, -11.262826], - [24.257155, -10.951993], - [23.912215, -10.926826], - [23.456791, -10.867863], - [22.837345, -11.017622], - [22.402798, -10.993075], - [22.155268, -11.084801], - [22.208753, -9.894796], - [21.875182, -9.523708], - [21.801801, -8.908707], - [21.949131, -8.305901], - [21.746456, -7.920085], - [21.728111, -7.290872], - [20.514748, -7.299606], - [20.601823, -6.939318], - [20.091622, -6.94309], - [20.037723, -7.116361], - [19.417502, -7.155429], - [19.166613, -7.738184], - [19.016752, -7.988246], - [18.464176, -7.847014], - [18.134222, -7.987678], - [17.47297, -8.068551], - [17.089996, -7.545689], - [16.860191, -7.222298], - [16.57318, -6.622645], - [16.326528, -5.87747], - [13.375597, -5.864241], - [13.024869, -5.984389], - [12.735171, -5.965682], - [12.322432, -6.100092], - [12.182337, -5.789931], - [12.436688, -5.684304], - [12.468004, -5.248362], - [12.631612, -4.991271], - [12.995517, -4.781103], - [13.25824, -4.882957], - [13.600235, -4.500138], - [14.144956, -4.510009], - [14.209035, -4.793092], - [14.582604, -4.970239], - [15.170992, -4.343507], - [15.75354, -3.855165], - [16.00629, -3.535133], - [15.972803, -2.712392], - [16.407092, -1.740927], - [16.865307, -1.225816], - [17.523716, -0.74383], - [17.638645, -0.424832], - [17.663553, -0.058084], - [17.82654, 0.288923], - [17.774192, 0.855659], - [17.898835, 1.741832], - [18.094276, 2.365722], - [18.393792, 2.900443], - [18.453065, 3.504386], - [18.542982, 4.201785], - [18.932312, 4.709506], - [19.467784, 5.031528], - [20.290679, 4.691678], - [20.927591, 4.322786], - [21.659123, 4.224342], - [22.405124, 4.02916], - [22.704124, 4.633051], - [22.84148, 4.710126], - [23.297214, 4.609693], - [24.410531, 5.108784], - [24.805029, 4.897247], - [25.128833, 4.927245], - [25.278798, 5.170408], - [25.650455, 5.256088], - [26.402761, 5.150875], - [27.044065, 5.127853], - [27.374226, 5.233944], - [27.979977, 4.408413], - [28.428994, 4.287155], - [28.696678, 4.455077], - [29.159078, 4.389267], - [29.715995, 4.600805], - [29.9535, 4.173699], - [30.83386, 3.509166] - ] - ] - }, - "id": "COD" - }, - { - "type": "Feature", - "properties": { "name": "Republic of the Congo" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [12.995517, -4.781103], - [12.62076, -4.438023], - [12.318608, -4.60623], - [11.914963, -5.037987], - [11.093773, -3.978827], - [11.855122, -3.426871], - [11.478039, -2.765619], - [11.820964, -2.514161], - [12.495703, -2.391688], - [12.575284, -1.948511], - [13.109619, -2.42874], - [13.992407, -2.470805], - [14.29921, -1.998276], - [14.425456, -1.333407], - [14.316418, -0.552627], - [13.843321, 0.038758], - [14.276266, 1.19693], - [14.026669, 1.395677], - [13.282631, 1.314184], - [13.003114, 1.830896], - [13.075822, 2.267097], - [14.337813, 2.227875], - [15.146342, 1.964015], - [15.940919, 1.727673], - [16.012852, 2.26764], - [16.537058, 3.198255], - [17.133042, 3.728197], - [17.8099, 3.560196], - [18.453065, 3.504386], - [18.393792, 2.900443], - [18.094276, 2.365722], - [17.898835, 1.741832], - [17.774192, 0.855659], - [17.82654, 0.288923], - [17.663553, -0.058084], - [17.638645, -0.424832], - [17.523716, -0.74383], - [16.865307, -1.225816], - [16.407092, -1.740927], - [15.972803, -2.712392], - [16.00629, -3.535133], - [15.75354, -3.855165], - [15.170992, -4.343507], - [14.582604, -4.970239], - [14.209035, -4.793092], - [14.144956, -4.510009], - [13.600235, -4.500138], - [13.25824, -4.882957], - [12.995517, -4.781103] - ] - ] - }, - "id": "COG" - }, - { - "type": "Feature", - "properties": { "name": "Colombia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-75.373223, -0.152032], - [-75.801466, 0.084801], - [-76.292314, 0.416047], - [-76.57638, 0.256936], - [-77.424984, 0.395687], - [-77.668613, 0.825893], - [-77.855061, 0.809925], - [-78.855259, 1.380924], - [-78.990935, 1.69137], - [-78.617831, 1.766404], - [-78.662118, 2.267355], - [-78.42761, 2.629556], - [-77.931543, 2.696606], - [-77.510431, 3.325017], - [-77.12769, 3.849636], - [-77.496272, 4.087606], - [-77.307601, 4.667984], - [-77.533221, 5.582812], - [-77.318815, 5.845354], - [-77.476661, 6.691116], - [-77.881571, 7.223771], - [-77.753414, 7.70984], - [-77.431108, 7.638061], - [-77.242566, 7.935278], - [-77.474723, 8.524286], - [-77.353361, 8.670505], - [-76.836674, 8.638749], - [-76.086384, 9.336821], - [-75.6746, 9.443248], - [-75.664704, 9.774003], - [-75.480426, 10.61899], - [-74.906895, 11.083045], - [-74.276753, 11.102036], - [-74.197223, 11.310473], - [-73.414764, 11.227015], - [-72.627835, 11.731972], - [-72.238195, 11.95555], - [-71.75409, 12.437303], - [-71.399822, 12.376041], - [-71.137461, 12.112982], - [-71.331584, 11.776284], - [-71.973922, 11.608672], - [-72.227575, 11.108702], - [-72.614658, 10.821975], - [-72.905286, 10.450344], - [-73.027604, 9.73677], - [-73.304952, 9.152], - [-72.78873, 9.085027], - [-72.660495, 8.625288], - [-72.439862, 8.405275], - [-72.360901, 8.002638], - [-72.479679, 7.632506], - [-72.444487, 7.423785], - [-72.198352, 7.340431], - [-71.960176, 6.991615], - [-70.674234, 7.087785], - [-70.093313, 6.960376], - [-69.38948, 6.099861], - [-68.985319, 6.206805], - [-68.265052, 6.153268], - [-67.695087, 6.267318], - [-67.34144, 6.095468], - [-67.521532, 5.55687], - [-67.744697, 5.221129], - [-67.823012, 4.503937], - [-67.621836, 3.839482], - [-67.337564, 3.542342], - [-67.303173, 3.318454], - [-67.809938, 2.820655], - [-67.447092, 2.600281], - [-67.181294, 2.250638], - [-66.876326, 1.253361], - [-67.065048, 1.130112], - [-67.259998, 1.719999], - [-67.53781, 2.037163], - [-67.868565, 1.692455], - [-69.816973, 1.714805], - [-69.804597, 1.089081], - [-69.218638, 0.985677], - [-69.252434, 0.602651], - [-69.452396, 0.706159], - [-70.015566, 0.541414], - [-70.020656, -0.185156], - [-69.577065, -0.549992], - [-69.420486, -1.122619], - [-69.444102, -1.556287], - [-69.893635, -4.298187], - [-70.394044, -3.766591], - [-70.692682, -3.742872], - [-70.047709, -2.725156], - [-70.813476, -2.256865], - [-71.413646, -2.342802], - [-71.774761, -2.16979], - [-72.325787, -2.434218], - [-73.070392, -2.308954], - [-73.659504, -1.260491], - [-74.122395, -1.002833], - [-74.441601, -0.53082], - [-75.106625, -0.057205], - [-75.373223, -0.152032] - ] - ] - }, - "id": "COL" - }, - { - "type": "Feature", - "properties": { "name": "Costa Rica" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-82.965783, 8.225028], - [-83.508437, 8.446927], - [-83.711474, 8.656836], - [-83.596313, 8.830443], - [-83.632642, 9.051386], - [-83.909886, 9.290803], - [-84.303402, 9.487354], - [-84.647644, 9.615537], - [-84.713351, 9.908052], - [-84.97566, 10.086723], - [-84.911375, 9.795992], - [-85.110923, 9.55704], - [-85.339488, 9.834542], - [-85.660787, 9.933347], - [-85.797445, 10.134886], - [-85.791709, 10.439337], - [-85.659314, 10.754331], - [-85.941725, 10.895278], - [-85.71254, 11.088445], - [-85.561852, 11.217119], - [-84.903003, 10.952303], - [-84.673069, 11.082657], - [-84.355931, 10.999226], - [-84.190179, 10.79345], - [-83.895054, 10.726839], - [-83.655612, 10.938764], - [-83.40232, 10.395438], - [-83.015677, 9.992982], - [-82.546196, 9.566135], - [-82.932891, 9.476812], - [-82.927155, 9.07433], - [-82.719183, 8.925709], - [-82.868657, 8.807266], - [-82.829771, 8.626295], - [-82.913176, 8.423517], - [-82.965783, 8.225028] - ] - ] - }, - "id": "CRI" - }, - { - "type": "Feature", - "properties": { "name": "Cuba" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-82.268151, 23.188611], - [-81.404457, 23.117271], - [-80.618769, 23.10598], - [-79.679524, 22.765303], - [-79.281486, 22.399202], - [-78.347434, 22.512166], - [-77.993296, 22.277194], - [-77.146422, 21.657851], - [-76.523825, 21.20682], - [-76.19462, 21.220565], - [-75.598222, 21.016624], - [-75.67106, 20.735091], - [-74.933896, 20.693905], - [-74.178025, 20.284628], - [-74.296648, 20.050379], - [-74.961595, 19.923435], - [-75.63468, 19.873774], - [-76.323656, 19.952891], - [-77.755481, 19.855481], - [-77.085108, 20.413354], - [-77.492655, 20.673105], - [-78.137292, 20.739949], - [-78.482827, 21.028613], - [-78.719867, 21.598114], - [-79.285, 21.559175], - [-80.217475, 21.827324], - [-80.517535, 22.037079], - [-81.820943, 22.192057], - [-82.169992, 22.387109], - [-81.795002, 22.636965], - [-82.775898, 22.68815], - [-83.494459, 22.168518], - [-83.9088, 22.154565], - [-84.052151, 21.910575], - [-84.54703, 21.801228], - [-84.974911, 21.896028], - [-84.447062, 22.20495], - [-84.230357, 22.565755], - [-83.77824, 22.788118], - [-83.267548, 22.983042], - [-82.510436, 23.078747], - [-82.268151, 23.188611] - ] - ] - }, - "id": "CUB" - }, - { - "type": "Feature", - "properties": { "name": "Northern Cyprus" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.73178, 35.140026], - [32.802474, 35.145504], - [32.946961, 35.386703], - [33.667227, 35.373216], - [34.576474, 35.671596], - [33.900804, 35.245756], - [33.973617, 35.058506], - [33.86644, 35.093595], - [33.675392, 35.017863], - [33.525685, 35.038688], - [33.475817, 35.000345], - [33.455922, 35.101424], - [33.383833, 35.162712], - [33.190977, 35.173125], - [32.919572, 35.087833], - [32.73178, 35.140026] - ] - ] - }, - "id": "-99" - }, - { - "type": "Feature", - "properties": { "name": "Cyprus" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.973617, 35.058506], - [34.004881, 34.978098], - [32.979827, 34.571869], - [32.490296, 34.701655], - [32.256667, 35.103232], - [32.73178, 35.140026], - [32.919572, 35.087833], - [33.190977, 35.173125], - [33.383833, 35.162712], - [33.455922, 35.101424], - [33.475817, 35.000345], - [33.525685, 35.038688], - [33.675392, 35.017863], - [33.86644, 35.093595], - [33.973617, 35.058506] - ] - ] - }, - "id": "CYP" - }, - { - "type": "Feature", - "properties": { "name": "Czech Republic" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.960288, 48.596982], - [16.499283, 48.785808], - [16.029647, 48.733899], - [15.253416, 49.039074], - [14.901447, 48.964402], - [14.338898, 48.555305], - [13.595946, 48.877172], - [13.031329, 49.307068], - [12.521024, 49.547415], - [12.415191, 49.969121], - [12.240111, 50.266338], - [12.966837, 50.484076], - [13.338132, 50.733234], - [14.056228, 50.926918], - [14.307013, 51.117268], - [14.570718, 51.002339], - [15.016996, 51.106674], - [15.490972, 50.78473], - [16.238627, 50.697733], - [16.176253, 50.422607], - [16.719476, 50.215747], - [16.868769, 50.473974], - [17.554567, 50.362146], - [17.649445, 50.049038], - [18.392914, 49.988629], - [18.853144, 49.49623], - [18.554971, 49.495015], - [18.399994, 49.315001], - [18.170498, 49.271515], - [18.104973, 49.043983], - [17.913512, 48.996493], - [17.886485, 48.903475], - [17.545007, 48.800019], - [17.101985, 48.816969], - [16.960288, 48.596982] - ] - ] - }, - "id": "CZE" - }, - { - "type": "Feature", - "properties": { "name": "Germany" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.921906, 54.983104], - [9.93958, 54.596642], - [10.950112, 54.363607], - [10.939467, 54.008693], - [11.956252, 54.196486], - [12.51844, 54.470371], - [13.647467, 54.075511], - [14.119686, 53.757029], - [14.353315, 53.248171], - [14.074521, 52.981263], - [14.4376, 52.62485], - [14.685026, 52.089947], - [14.607098, 51.745188], - [15.016996, 51.106674], - [14.570718, 51.002339], - [14.307013, 51.117268], - [14.056228, 50.926918], - [13.338132, 50.733234], - [12.966837, 50.484076], - [12.240111, 50.266338], - [12.415191, 49.969121], - [12.521024, 49.547415], - [13.031329, 49.307068], - [13.595946, 48.877172], - [13.243357, 48.416115], - [12.884103, 48.289146], - [13.025851, 47.637584], - [12.932627, 47.467646], - [12.62076, 47.672388], - [12.141357, 47.703083], - [11.426414, 47.523766], - [10.544504, 47.566399], - [10.402084, 47.302488], - [9.896068, 47.580197], - [9.594226, 47.525058], - [8.522612, 47.830828], - [8.317301, 47.61358], - [7.466759, 47.620582], - [7.593676, 48.333019], - [8.099279, 49.017784], - [6.65823, 49.201958], - [6.18632, 49.463803], - [6.242751, 49.902226], - [6.043073, 50.128052], - [6.156658, 50.803721], - [5.988658, 51.851616], - [6.589397, 51.852029], - [6.84287, 52.22844], - [7.092053, 53.144043], - [6.90514, 53.482162], - [7.100425, 53.693932], - [7.936239, 53.748296], - [8.121706, 53.527792], - [8.800734, 54.020786], - [8.572118, 54.395646], - [8.526229, 54.962744], - [9.282049, 54.830865], - [9.921906, 54.983104] - ] - ] - }, - "id": "DEU" - }, - { - "type": "Feature", - "properties": { "name": "Djibouti" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [43.081226, 12.699639], - [43.317852, 12.390148], - [43.286381, 11.974928], - [42.715874, 11.735641], - [43.145305, 11.46204], - [42.776852, 10.926879], - [42.55493, 11.10511], - [42.31414, 11.0342], - [41.75557, 11.05091], - [41.73959, 11.35511], - [41.66176, 11.6312], - [42, 12.1], - [42.35156, 12.54223], - [42.779642, 12.455416], - [43.081226, 12.699639] - ] - ] - }, - "id": "DJI" - }, - { - "type": "Feature", - "properties": { "name": "Denmark" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [12.690006, 55.609991], - [12.089991, 54.800015], - [11.043543, 55.364864], - [10.903914, 55.779955], - [12.370904, 56.111407], - [12.690006, 55.609991] - ] - ], - [ - [ - [10.912182, 56.458621], - [10.667804, 56.081383], - [10.369993, 56.190007], - [9.649985, 55.469999], - [9.921906, 54.983104], - [9.282049, 54.830865], - [8.526229, 54.962744], - [8.120311, 55.517723], - [8.089977, 56.540012], - [8.256582, 56.809969], - [8.543438, 57.110003], - [9.424469, 57.172066], - [9.775559, 57.447941], - [10.580006, 57.730017], - [10.546106, 57.215733], - [10.25, 56.890016], - [10.369993, 56.609982], - [10.912182, 56.458621] - ] - ] - ] - }, - "id": "DNK" - }, - { - "type": "Feature", - "properties": { "name": "Dominican Republic" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-71.712361, 19.714456], - [-71.587304, 19.884911], - [-70.806706, 19.880286], - [-70.214365, 19.622885], - [-69.950815, 19.648], - [-69.76925, 19.293267], - [-69.222126, 19.313214], - [-69.254346, 19.015196], - [-68.809412, 18.979074], - [-68.317943, 18.612198], - [-68.689316, 18.205142], - [-69.164946, 18.422648], - [-69.623988, 18.380713], - [-69.952934, 18.428307], - [-70.133233, 18.245915], - [-70.517137, 18.184291], - [-70.669298, 18.426886], - [-70.99995, 18.283329], - [-71.40021, 17.598564], - [-71.657662, 17.757573], - [-71.708305, 18.044997], - [-71.687738, 18.31666], - [-71.945112, 18.6169], - [-71.701303, 18.785417], - [-71.624873, 19.169838], - [-71.712361, 19.714456] - ] - ] - }, - "id": "DOM" - }, - { - "type": "Feature", - "properties": { "name": "Algeria" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [11.999506, 23.471668], - [8.572893, 21.565661], - [5.677566, 19.601207], - [4.267419, 19.155265], - [3.158133, 19.057364], - [3.146661, 19.693579], - [2.683588, 19.85623], - [2.060991, 20.142233], - [1.823228, 20.610809], - [-1.550055, 22.792666], - [-4.923337, 24.974574], - [-8.6844, 27.395744], - [-8.665124, 27.589479], - [-8.66559, 27.656426], - [-8.674116, 28.841289], - [-7.059228, 29.579228], - [-6.060632, 29.7317], - [-5.242129, 30.000443], - [-4.859646, 30.501188], - [-3.690441, 30.896952], - [-3.647498, 31.637294], - [-3.06898, 31.724498], - [-2.616605, 32.094346], - [-1.307899, 32.262889], - [-1.124551, 32.651522], - [-1.388049, 32.864015], - [-1.733455, 33.919713], - [-1.792986, 34.527919], - [-2.169914, 35.168396], - [-1.208603, 35.714849], - [-0.127454, 35.888662], - [0.503877, 36.301273], - [1.466919, 36.605647], - [3.161699, 36.783905], - [4.815758, 36.865037], - [5.32012, 36.716519], - [6.26182, 37.110655], - [7.330385, 37.118381], - [7.737078, 36.885708], - [8.420964, 36.946427], - [8.217824, 36.433177], - [8.376368, 35.479876], - [8.140981, 34.655146], - [7.524482, 34.097376], - [7.612642, 33.344115], - [8.430473, 32.748337], - [8.439103, 32.506285], - [9.055603, 32.102692], - [9.48214, 30.307556], - [9.805634, 29.424638], - [9.859998, 28.95999], - [9.683885, 28.144174], - [9.756128, 27.688259], - [9.629056, 27.140953], - [9.716286, 26.512206], - [9.319411, 26.094325], - [9.910693, 25.365455], - [9.948261, 24.936954], - [10.303847, 24.379313], - [10.771364, 24.562532], - [11.560669, 24.097909], - [11.999506, 23.471668] - ] - ] - }, - "id": "DZA" - }, - { - "type": "Feature", - "properties": { "name": "Ecuador" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-80.302561, -3.404856], - [-79.770293, -2.657512], - [-79.986559, -2.220794], - [-80.368784, -2.685159], - [-80.967765, -2.246943], - [-80.764806, -1.965048], - [-80.933659, -1.057455], - [-80.58337, -0.906663], - [-80.399325, -0.283703], - [-80.020898, 0.36034], - [-80.09061, 0.768429], - [-79.542762, 0.982938], - [-78.855259, 1.380924], - [-77.855061, 0.809925], - [-77.668613, 0.825893], - [-77.424984, 0.395687], - [-76.57638, 0.256936], - [-76.292314, 0.416047], - [-75.801466, 0.084801], - [-75.373223, -0.152032], - [-75.233723, -0.911417], - [-75.544996, -1.56161], - [-76.635394, -2.608678], - [-77.837905, -3.003021], - [-78.450684, -3.873097], - [-78.639897, -4.547784], - [-79.205289, -4.959129], - [-79.624979, -4.454198], - [-80.028908, -4.346091], - [-80.442242, -4.425724], - [-80.469295, -4.059287], - [-80.184015, -3.821162], - [-80.302561, -3.404856] - ] - ] - }, - "id": "ECU" - }, - { - "type": "Feature", - "properties": { "name": "Egypt" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.9226, 29.50133], - [34.64174, 29.09942], - [34.42655, 28.34399], - [34.15451, 27.8233], - [33.92136, 27.6487], - [33.58811, 27.97136], - [33.13676, 28.41765], - [32.42323, 29.85108], - [32.32046, 29.76043], - [32.73482, 28.70523], - [33.34876, 27.69989], - [34.10455, 26.14227], - [34.47387, 25.59856], - [34.79507, 25.03375], - [35.69241, 23.92671], - [35.49372, 23.75237], - [35.52598, 23.10244], - [36.69069, 22.20485], - [36.86623, 22], - [32.9, 22], - [29.02, 22], - [25, 22], - [25, 25.6825], - [25, 29.238655], - [24.70007, 30.04419], - [24.95762, 30.6616], - [24.80287, 31.08929], - [25.16482, 31.56915], - [26.49533, 31.58568], - [27.45762, 31.32126], - [28.45048, 31.02577], - [28.91353, 30.87005], - [29.68342, 31.18686], - [30.09503, 31.4734], - [30.97693, 31.55586], - [31.68796, 31.4296], - [31.96041, 30.9336], - [32.19247, 31.26034], - [32.99392, 31.02407], - [33.7734, 30.96746], - [34.26544, 31.21936], - [34.9226, 29.50133] - ] - ] - }, - "id": "EGY" - }, - { - "type": "Feature", - "properties": { "name": "Eritrea" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [42.35156, 12.54223], - [42.00975, 12.86582], - [41.59856, 13.45209], - [41.155194, 13.77332], - [40.8966, 14.11864], - [40.026219, 14.519579], - [39.34061, 14.53155], - [39.0994, 14.74064], - [38.51295, 14.50547], - [37.90607, 14.95943], - [37.59377, 14.2131], - [36.42951, 14.42211], - [36.323189, 14.822481], - [36.75386, 16.291874], - [36.85253, 16.95655], - [37.16747, 17.26314], - [37.904, 17.42754], - [38.41009, 17.998307], - [38.990623, 16.840626], - [39.26611, 15.922723], - [39.814294, 15.435647], - [41.179275, 14.49108], - [41.734952, 13.921037], - [42.276831, 13.343992], - [42.589576, 13.000421], - [43.081226, 12.699639], - [42.779642, 12.455416], - [42.35156, 12.54223] - ] - ] - }, - "id": "ERI" - }, - { - "type": "Feature", - "properties": { "name": "Spain" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-9.034818, 41.880571], - [-8.984433, 42.592775], - [-9.392884, 43.026625], - [-7.97819, 43.748338], - [-6.754492, 43.567909], - [-5.411886, 43.57424], - [-4.347843, 43.403449], - [-3.517532, 43.455901], - [-1.901351, 43.422802], - [-1.502771, 43.034014], - [0.338047, 42.579546], - [0.701591, 42.795734], - [1.826793, 42.343385], - [2.985999, 42.473015], - [3.039484, 41.89212], - [2.091842, 41.226089], - [0.810525, 41.014732], - [0.721331, 40.678318], - [0.106692, 40.123934], - [-0.278711, 39.309978], - [0.111291, 38.738514], - [-0.467124, 38.292366], - [-0.683389, 37.642354], - [-1.438382, 37.443064], - [-2.146453, 36.674144], - [-3.415781, 36.6589], - [-4.368901, 36.677839], - [-4.995219, 36.324708], - [-5.37716, 35.94685], - [-5.866432, 36.029817], - [-6.236694, 36.367677], - [-6.520191, 36.942913], - [-7.453726, 37.097788], - [-7.537105, 37.428904], - [-7.166508, 37.803894], - [-7.029281, 38.075764], - [-7.374092, 38.373059], - [-7.098037, 39.030073], - [-7.498632, 39.629571], - [-7.066592, 39.711892], - [-7.026413, 40.184524], - [-6.86402, 40.330872], - [-6.851127, 41.111083], - [-6.389088, 41.381815], - [-6.668606, 41.883387], - [-7.251309, 41.918346], - [-7.422513, 41.792075], - [-8.013175, 41.790886], - [-8.263857, 42.280469], - [-8.671946, 42.134689], - [-9.034818, 41.880571] - ] - ] - }, - "id": "ESP" - }, - { - "type": "Feature", - "properties": { "name": "Estonia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [24.312863, 57.793424], - [24.428928, 58.383413], - [24.061198, 58.257375], - [23.42656, 58.612753], - [23.339795, 59.18724], - [24.604214, 59.465854], - [25.864189, 59.61109], - [26.949136, 59.445803], - [27.981114, 59.475388], - [28.131699, 59.300825], - [27.420166, 58.724581], - [27.716686, 57.791899], - [27.288185, 57.474528], - [26.463532, 57.476389], - [25.60281, 57.847529], - [25.164594, 57.970157], - [24.312863, 57.793424] - ] - ] - }, - "id": "EST" - }, - { - "type": "Feature", - "properties": { "name": "Ethiopia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [37.90607, 14.95943], - [38.51295, 14.50547], - [39.0994, 14.74064], - [39.34061, 14.53155], - [40.02625, 14.51959], - [40.8966, 14.11864], - [41.1552, 13.77333], - [41.59856, 13.45209], - [42.00975, 12.86582], - [42.35156, 12.54223], - [42, 12.1], - [41.66176, 11.6312], - [41.73959, 11.35511], - [41.75557, 11.05091], - [42.31414, 11.0342], - [42.55493, 11.10511], - [42.776852, 10.926879], - [42.55876, 10.57258], - [42.92812, 10.02194], - [43.29699, 9.54048], - [43.67875, 9.18358], - [46.94834, 7.99688], - [47.78942, 8.003], - [44.9636, 5.00162], - [43.66087, 4.95755], - [42.76967, 4.25259], - [42.12861, 4.23413], - [41.855083, 3.918912], - [41.1718, 3.91909], - [40.76848, 4.25702], - [39.85494, 3.83879], - [39.559384, 3.42206], - [38.89251, 3.50074], - [38.67114, 3.61607], - [38.43697, 3.58851], - [38.120915, 3.598605], - [36.855093, 4.447864], - [36.159079, 4.447864], - [35.817448, 4.776966], - [35.817448, 5.338232], - [35.298007, 5.506], - [34.70702, 6.59422], - [34.25032, 6.82607], - [34.0751, 7.22595], - [33.56829, 7.71334], - [32.95418, 7.78497], - [33.2948, 8.35458], - [33.8255, 8.37916], - [33.97498, 8.68456], - [33.96162, 9.58358], - [34.25745, 10.63009], - [34.73115, 10.91017], - [34.83163, 11.31896], - [35.26049, 12.08286], - [35.86363, 12.57828], - [36.27022, 13.56333], - [36.42951, 14.42211], - [37.59377, 14.2131], - [37.90607, 14.95943] - ] - ] - }, - "id": "ETH" - }, - { - "type": "Feature", - "properties": { "name": "Finland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [28.59193, 69.064777], - [28.445944, 68.364613], - [29.977426, 67.698297], - [29.054589, 66.944286], - [30.21765, 65.80598], - [29.54443, 64.948672], - [30.444685, 64.204453], - [30.035872, 63.552814], - [31.516092, 62.867687], - [31.139991, 62.357693], - [30.211107, 61.780028], - [28.069998, 60.503517], - [26.255173, 60.423961], - [24.496624, 60.057316], - [22.869695, 59.846373], - [22.290764, 60.391921], - [21.322244, 60.72017], - [21.544866, 61.705329], - [21.059211, 62.607393], - [21.536029, 63.189735], - [22.442744, 63.81781], - [24.730512, 64.902344], - [25.398068, 65.111427], - [25.294043, 65.534346], - [23.903379, 66.006927], - [23.56588, 66.396051], - [23.539473, 67.936009], - [21.978535, 68.616846], - [20.645593, 69.106247], - [21.244936, 69.370443], - [22.356238, 68.841741], - [23.66205, 68.891247], - [24.735679, 68.649557], - [25.689213, 69.092114], - [26.179622, 69.825299], - [27.732292, 70.164193], - [29.015573, 69.766491], - [28.59193, 69.064777] - ] - ] - }, - "id": "FIN" - }, - { - "type": "Feature", - "properties": { "name": "Fiji" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [178.3736, -17.33992], - [178.71806, -17.62846], - [178.55271, -18.15059], - [177.93266, -18.28799], - [177.38146, -18.16432], - [177.28504, -17.72465], - [177.67087, -17.38114], - [178.12557, -17.50481], - [178.3736, -17.33992] - ] - ], - [ - [ - [179.364143, -16.801354], - [178.725059, -17.012042], - [178.596839, -16.63915], - [179.096609, -16.433984], - [179.413509, -16.379054], - [180, -16.067133], - [180, -16.555217], - [179.364143, -16.801354] - ] - ], - [ - [ - [-179.917369, -16.501783], - [-180, -16.555217], - [-180, -16.067133], - [-179.79332, -16.020882], - [-179.917369, -16.501783] - ] - ] - ] - }, - "id": "FJI" - }, - { - "type": "Feature", - "properties": { "name": "Falkland Islands" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-61.2, -51.85], - [-60, -51.25], - [-59.15, -51.5], - [-58.55, -51.1], - [-57.75, -51.55], - [-58.05, -51.9], - [-59.4, -52.2], - [-59.85, -51.85], - [-60.7, -52.3], - [-61.2, -51.85] - ] - ] - }, - "id": "FLK" - }, - { - "type": "Feature", - "properties": { "name": "France" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-52.556425, 2.504705], - [-52.939657, 2.124858], - [-53.418465, 2.053389], - [-53.554839, 2.334897], - [-53.778521, 2.376703], - [-54.088063, 2.105557], - [-54.524754, 2.311849], - [-54.27123, 2.738748], - [-54.184284, 3.194172], - [-54.011504, 3.62257], - [-54.399542, 4.212611], - [-54.478633, 4.896756], - [-53.958045, 5.756548], - [-53.618453, 5.646529], - [-52.882141, 5.409851], - [-51.823343, 4.565768], - [-51.657797, 4.156232], - [-52.249338, 3.241094], - [-52.556425, 2.504705] - ] - ], - [ - [ - [9.560016, 42.152492], - [9.229752, 41.380007], - [8.775723, 41.583612], - [8.544213, 42.256517], - [8.746009, 42.628122], - [9.390001, 43.009985], - [9.560016, 42.152492] - ] - ], - [ - [ - [3.588184, 50.378992], - [4.286023, 49.907497], - [4.799222, 49.985373], - [5.674052, 49.529484], - [5.897759, 49.442667], - [6.18632, 49.463803], - [6.65823, 49.201958], - [8.099279, 49.017784], - [7.593676, 48.333019], - [7.466759, 47.620582], - [7.192202, 47.449766], - [6.736571, 47.541801], - [6.768714, 47.287708], - [6.037389, 46.725779], - [6.022609, 46.27299], - [6.5001, 46.429673], - [6.843593, 45.991147], - [6.802355, 45.70858], - [7.096652, 45.333099], - [6.749955, 45.028518], - [7.007562, 44.254767], - [7.549596, 44.127901], - [7.435185, 43.693845], - [6.529245, 43.128892], - [4.556963, 43.399651], - [3.100411, 43.075201], - [2.985999, 42.473015], - [1.826793, 42.343385], - [0.701591, 42.795734], - [0.338047, 42.579546], - [-1.502771, 43.034014], - [-1.901351, 43.422802], - [-1.384225, 44.02261], - [-1.193798, 46.014918], - [-2.225724, 47.064363], - [-2.963276, 47.570327], - [-4.491555, 47.954954], - [-4.59235, 48.68416], - [-3.295814, 48.901692], - [-1.616511, 48.644421], - [-1.933494, 49.776342], - [-0.989469, 49.347376], - [1.338761, 50.127173], - [1.639001, 50.946606], - [2.513573, 51.148506], - [2.658422, 50.796848], - [3.123252, 50.780363], - [3.588184, 50.378992] - ] - ] - ] - }, - "id": "FRA" - }, - { - "type": "Feature", - "properties": { "name": "Gabon" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [11.093773, -3.978827], - [10.066135, -2.969483], - [9.405245, -2.144313], - [8.797996, -1.111301], - [8.830087, -0.779074], - [9.04842, -0.459351], - [9.291351, 0.268666], - [9.492889, 1.01012], - [9.830284, 1.067894], - [11.285079, 1.057662], - [11.276449, 2.261051], - [11.751665, 2.326758], - [12.35938, 2.192812], - [12.951334, 2.321616], - [13.075822, 2.267097], - [13.003114, 1.830896], - [13.282631, 1.314184], - [14.026669, 1.395677], - [14.276266, 1.19693], - [13.843321, 0.038758], - [14.316418, -0.552627], - [14.425456, -1.333407], - [14.29921, -1.998276], - [13.992407, -2.470805], - [13.109619, -2.42874], - [12.575284, -1.948511], - [12.495703, -2.391688], - [11.820964, -2.514161], - [11.478039, -2.765619], - [11.855122, -3.426871], - [11.093773, -3.978827] - ] - ] - }, - "id": "GAB" - }, - { - "type": "Feature", - "properties": { "name": "England" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-5.661949, 54.554603], - [-6.197885, 53.867565], - [-6.95373, 54.073702], - [-7.572168, 54.059956], - [-7.366031, 54.595841], - [-7.572168, 55.131622], - [-6.733847, 55.17286], - [-5.661949, 54.554603] - ] - ], - [ - [ - [-3.005005, 58.635], - [-4.073828, 57.553025], - [-3.055002, 57.690019], - [-1.959281, 57.6848], - [-2.219988, 56.870017], - [-3.119003, 55.973793], - [-2.085009, 55.909998], - [-2.005676, 55.804903], - [-1.114991, 54.624986], - [-0.430485, 54.464376], - [0.184981, 53.325014], - [0.469977, 52.929999], - [1.681531, 52.73952], - [1.559988, 52.099998], - [1.050562, 51.806761], - [1.449865, 51.289428], - [0.550334, 50.765739], - [-0.787517, 50.774989], - [-2.489998, 50.500019], - [-2.956274, 50.69688], - [-3.617448, 50.228356], - [-4.542508, 50.341837], - [-5.245023, 49.96], - [-5.776567, 50.159678], - [-4.30999, 51.210001], - [-3.414851, 51.426009], - [-3.422719, 51.426848], - [-4.984367, 51.593466], - [-5.267296, 51.9914], - [-4.222347, 52.301356], - [-4.770013, 52.840005], - [-4.579999, 53.495004], - [-3.093831, 53.404547], - [-3.09208, 53.404441], - [-2.945009, 53.985], - [-3.614701, 54.600937], - [-3.630005, 54.615013], - [-4.844169, 54.790971], - [-5.082527, 55.061601], - [-4.719112, 55.508473], - [-5.047981, 55.783986], - [-5.586398, 55.311146], - [-5.644999, 56.275015], - [-6.149981, 56.78501], - [-5.786825, 57.818848], - [-5.009999, 58.630013], - [-4.211495, 58.550845], - [-3.005005, 58.635] - ] - ] - ] - }, - "id": "GBR" - }, - { - "type": "Feature", - "properties": { "name": "Georgia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [41.554084, 41.535656], - [41.703171, 41.962943], - [41.45347, 42.645123], - [40.875469, 43.013628], - [40.321394, 43.128634], - [39.955009, 43.434998], - [40.076965, 43.553104], - [40.922185, 43.382159], - [42.394395, 43.220308], - [43.756017, 42.740828], - [43.9312, 42.554974], - [44.537623, 42.711993], - [45.470279, 42.502781], - [45.77641, 42.092444], - [46.404951, 41.860675], - [46.145432, 41.722802], - [46.637908, 41.181673], - [46.501637, 41.064445], - [45.962601, 41.123873], - [45.217426, 41.411452], - [44.97248, 41.248129], - [43.582746, 41.092143], - [42.619549, 41.583173], - [41.554084, 41.535656] - ] - ] - }, - "id": "GEO" - }, - { - "type": "Feature", - "properties": { "name": "Ghana" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [1.060122, 5.928837], - [-0.507638, 5.343473], - [-1.063625, 5.000548], - [-1.964707, 4.710462], - [-2.856125, 4.994476], - [-2.810701, 5.389051], - [-3.24437, 6.250472], - [-2.983585, 7.379705], - [-2.56219, 8.219628], - [-2.827496, 9.642461], - [-2.963896, 10.395335], - [-2.940409, 10.96269], - [-1.203358, 11.009819], - [-0.761576, 10.93693], - [-0.438702, 11.098341], - [0.023803, 11.018682], - [-0.049785, 10.706918], - [0.36758, 10.191213], - [0.365901, 9.465004], - [0.461192, 8.677223], - [0.712029, 8.312465], - [0.490957, 7.411744], - [0.570384, 6.914359], - [0.836931, 6.279979], - [1.060122, 5.928837] - ] - ] - }, - "id": "GHA" - }, - { - "type": "Feature", - "properties": { "name": "Guinea" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-8.439298, 7.686043], - [-8.722124, 7.711674], - [-8.926065, 7.309037], - [-9.208786, 7.313921], - [-9.403348, 7.526905], - [-9.33728, 7.928534], - [-9.755342, 8.541055], - [-10.016567, 8.428504], - [-10.230094, 8.406206], - [-10.505477, 8.348896], - [-10.494315, 8.715541], - [-10.65477, 8.977178], - [-10.622395, 9.26791], - [-10.839152, 9.688246], - [-11.117481, 10.045873], - [-11.917277, 10.046984], - [-12.150338, 9.858572], - [-12.425929, 9.835834], - [-12.596719, 9.620188], - [-12.711958, 9.342712], - [-13.24655, 8.903049], - [-13.685154, 9.494744], - [-14.074045, 9.886167], - [-14.330076, 10.01572], - [-14.579699, 10.214467], - [-14.693232, 10.656301], - [-14.839554, 10.876572], - [-15.130311, 11.040412], - [-14.685687, 11.527824], - [-14.382192, 11.509272], - [-14.121406, 11.677117], - [-13.9008, 11.678719], - [-13.743161, 11.811269], - [-13.828272, 12.142644], - [-13.718744, 12.247186], - [-13.700476, 12.586183], - [-13.217818, 12.575874], - [-12.499051, 12.33209], - [-12.278599, 12.35444], - [-12.203565, 12.465648], - [-11.658301, 12.386583], - [-11.513943, 12.442988], - [-11.456169, 12.076834], - [-11.297574, 12.077971], - [-11.036556, 12.211245], - [-10.87083, 12.177887], - [-10.593224, 11.923975], - [-10.165214, 11.844084], - [-9.890993, 12.060479], - [-9.567912, 12.194243], - [-9.327616, 12.334286], - [-9.127474, 12.30806], - [-8.905265, 12.088358], - [-8.786099, 11.812561], - [-8.376305, 11.393646], - [-8.581305, 11.136246], - [-8.620321, 10.810891], - [-8.407311, 10.909257], - [-8.282357, 10.792597], - [-8.335377, 10.494812], - [-8.029944, 10.206535], - [-8.229337, 10.12902], - [-8.309616, 9.789532], - [-8.079114, 9.376224], - [-7.8321, 8.575704], - [-8.203499, 8.455453], - [-8.299049, 8.316444], - [-8.221792, 8.123329], - [-8.280703, 7.68718], - [-8.439298, 7.686043] - ] - ] - }, - "id": "GIN" - }, - { - "type": "Feature", - "properties": { "name": "Gambia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-16.841525, 13.151394], - [-16.713729, 13.594959], - [-15.624596, 13.623587], - [-15.39877, 13.860369], - [-15.081735, 13.876492], - [-14.687031, 13.630357], - [-14.376714, 13.62568], - [-14.046992, 13.794068], - [-13.844963, 13.505042], - [-14.277702, 13.280585], - [-14.712197, 13.298207], - [-15.141163, 13.509512], - [-15.511813, 13.27857], - [-15.691001, 13.270353], - [-15.931296, 13.130284], - [-16.841525, 13.151394] - ] - ] - }, - "id": "GMB" - }, - { - "type": "Feature", - "properties": { "name": "Guinea Bissau" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-15.130311, 11.040412], - [-15.66418, 11.458474], - [-16.085214, 11.524594], - [-16.314787, 11.806515], - [-16.308947, 11.958702], - [-16.613838, 12.170911], - [-16.677452, 12.384852], - [-16.147717, 12.547762], - [-15.816574, 12.515567], - [-15.548477, 12.62817], - [-13.700476, 12.586183], - [-13.718744, 12.247186], - [-13.828272, 12.142644], - [-13.743161, 11.811269], - [-13.9008, 11.678719], - [-14.121406, 11.677117], - [-14.382192, 11.509272], - [-14.685687, 11.527824], - [-15.130311, 11.040412] - ] - ] - }, - "id": "GNB" - }, - { - "type": "Feature", - "properties": { "name": "Equatorial Guinea" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.492889, 1.01012], - [9.305613, 1.160911], - [9.649158, 2.283866], - [11.276449, 2.261051], - [11.285079, 1.057662], - [9.830284, 1.067894], - [9.492889, 1.01012] - ] - ] - }, - "id": "GNQ" - }, - { - "type": "Feature", - "properties": { "name": "Greece" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [23.69998, 35.705004], - [24.246665, 35.368022], - [25.025015, 35.424996], - [25.769208, 35.354018], - [25.745023, 35.179998], - [26.290003, 35.29999], - [26.164998, 35.004995], - [24.724982, 34.919988], - [24.735007, 35.084991], - [23.514978, 35.279992], - [23.69998, 35.705004] - ] - ], - [ - [ - [26.604196, 41.562115], - [26.294602, 40.936261], - [26.056942, 40.824123], - [25.447677, 40.852545], - [24.925848, 40.947062], - [23.714811, 40.687129], - [24.407999, 40.124993], - [23.899968, 39.962006], - [23.342999, 39.960998], - [22.813988, 40.476005], - [22.626299, 40.256561], - [22.849748, 39.659311], - [23.350027, 39.190011], - [22.973099, 38.970903], - [23.530016, 38.510001], - [24.025025, 38.219993], - [24.040011, 37.655015], - [23.115003, 37.920011], - [23.409972, 37.409991], - [22.774972, 37.30501], - [23.154225, 36.422506], - [22.490028, 36.41], - [21.670026, 36.844986], - [21.295011, 37.644989], - [21.120034, 38.310323], - [20.730032, 38.769985], - [20.217712, 39.340235], - [20.150016, 39.624998], - [20.615, 40.110007], - [20.674997, 40.435], - [20.99999, 40.580004], - [21.02004, 40.842727], - [21.674161, 40.931275], - [22.055378, 41.149866], - [22.597308, 41.130487], - [22.76177, 41.3048], - [22.952377, 41.337994], - [23.692074, 41.309081], - [24.492645, 41.583896], - [25.197201, 41.234486], - [26.106138, 41.328899], - [26.117042, 41.826905], - [26.604196, 41.562115] - ] - ] - ] - }, - "id": "GRC" - }, - { - "type": "Feature", - "properties": { "name": "Greenland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-46.76379, 82.62796], - [-43.40644, 83.22516], - [-39.89753, 83.18018], - [-38.62214, 83.54905], - [-35.08787, 83.64513], - [-27.10046, 83.51966], - [-20.84539, 82.72669], - [-22.69182, 82.34165], - [-26.51753, 82.29765], - [-31.9, 82.2], - [-31.39646, 82.02154], - [-27.85666, 82.13178], - [-24.84448, 81.78697], - [-22.90328, 82.09317], - [-22.07175, 81.73449], - [-23.16961, 81.15271], - [-20.62363, 81.52462], - [-15.76818, 81.91245], - [-12.77018, 81.71885], - [-12.20855, 81.29154], - [-16.28533, 80.58004], - [-16.85, 80.35], - [-20.04624, 80.17708], - [-17.73035, 80.12912], - [-18.9, 79.4], - [-19.70499, 78.75128], - [-19.67353, 77.63859], - [-18.47285, 76.98565], - [-20.03503, 76.94434], - [-21.67944, 76.62795], - [-19.83407, 76.09808], - [-19.59896, 75.24838], - [-20.66818, 75.15585], - [-19.37281, 74.29561], - [-21.59422, 74.22382], - [-20.43454, 73.81713], - [-20.76234, 73.46436], - [-22.17221, 73.30955], - [-23.56593, 73.30663], - [-22.31311, 72.62928], - [-22.29954, 72.18409], - [-24.27834, 72.59788], - [-24.79296, 72.3302], - [-23.44296, 72.08016], - [-22.13281, 71.46898], - [-21.75356, 70.66369], - [-23.53603, 70.471], - [-24.30702, 70.85649], - [-25.54341, 71.43094], - [-25.20135, 70.75226], - [-26.36276, 70.22646], - [-23.72742, 70.18401], - [-22.34902, 70.12946], - [-25.02927, 69.2588], - [-27.74737, 68.47046], - [-30.67371, 68.12503], - [-31.77665, 68.12078], - [-32.81105, 67.73547], - [-34.20196, 66.67974], - [-36.35284, 65.9789], - [-37.04378, 65.93768], - [-38.37505, 65.69213], - [-39.81222, 65.45848], - [-40.66899, 64.83997], - [-40.68281, 64.13902], - [-41.1887, 63.48246], - [-42.81938, 62.68233], - [-42.41666, 61.90093], - [-42.86619, 61.07404], - [-43.3784, 60.09772], - [-44.7875, 60.03676], - [-46.26364, 60.85328], - [-48.26294, 60.85843], - [-49.23308, 61.40681], - [-49.90039, 62.38336], - [-51.63325, 63.62691], - [-52.14014, 64.27842], - [-52.27659, 65.1767], - [-53.66166, 66.09957], - [-53.30161, 66.8365], - [-53.96911, 67.18899], - [-52.9804, 68.35759], - [-51.47536, 68.72958], - [-51.08041, 69.14781], - [-50.87122, 69.9291], - [-52.013585, 69.574925], - [-52.55792, 69.42616], - [-53.45629, 69.283625], - [-54.68336, 69.61003], - [-54.75001, 70.28932], - [-54.35884, 70.821315], - [-53.431315, 70.835755], - [-51.39014, 70.56978], - [-53.10937, 71.20485], - [-54.00422, 71.54719], - [-55, 71.406537], - [-55.83468, 71.65444], - [-54.71819, 72.58625], - [-55.32634, 72.95861], - [-56.12003, 73.64977], - [-57.32363, 74.71026], - [-58.59679, 75.09861], - [-58.58516, 75.51727], - [-61.26861, 76.10238], - [-63.39165, 76.1752], - [-66.06427, 76.13486], - [-68.50438, 76.06141], - [-69.66485, 76.37975], - [-71.40257, 77.00857], - [-68.77671, 77.32312], - [-66.76397, 77.37595], - [-71.04293, 77.63595], - [-73.297, 78.04419], - [-73.15938, 78.43271], - [-69.37345, 78.91388], - [-65.7107, 79.39436], - [-65.3239, 79.75814], - [-68.02298, 80.11721], - [-67.15129, 80.51582], - [-63.68925, 81.21396], - [-62.23444, 81.3211], - [-62.65116, 81.77042], - [-60.28249, 82.03363], - [-57.20744, 82.19074], - [-54.13442, 82.19962], - [-53.04328, 81.88833], - [-50.39061, 82.43883], - [-48.00386, 82.06481], - [-46.59984, 81.985945], - [-44.523, 81.6607], - [-46.9007, 82.19979], - [-46.76379, 82.62796] - ] - ] - }, - "id": "GRL" - }, - { - "type": "Feature", - "properties": { "name": "Guatemala" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-90.095555, 13.735338], - [-90.608624, 13.909771], - [-91.23241, 13.927832], - [-91.689747, 14.126218], - [-92.22775, 14.538829], - [-92.20323, 14.830103], - [-92.087216, 15.064585], - [-92.229249, 15.251447], - [-91.74796, 16.066565], - [-90.464473, 16.069562], - [-90.438867, 16.41011], - [-90.600847, 16.470778], - [-90.711822, 16.687483], - [-91.08167, 16.918477], - [-91.453921, 17.252177], - [-91.002269, 17.254658], - [-91.00152, 17.817595], - [-90.067934, 17.819326], - [-89.14308, 17.808319], - [-89.150806, 17.015577], - [-89.229122, 15.886938], - [-88.930613, 15.887273], - [-88.604586, 15.70638], - [-88.518364, 15.855389], - [-88.225023, 15.727722], - [-88.68068, 15.346247], - [-89.154811, 15.066419], - [-89.22522, 14.874286], - [-89.145535, 14.678019], - [-89.353326, 14.424133], - [-89.587343, 14.362586], - [-89.534219, 14.244816], - [-89.721934, 14.134228], - [-90.064678, 13.88197], - [-90.095555, 13.735338] - ] - ] - }, - "id": "GTM" - }, - { - "type": "Feature", - "properties": { "name": "Guyana" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-59.758285, 8.367035], - [-59.101684, 7.999202], - [-58.482962, 7.347691], - [-58.454876, 6.832787], - [-58.078103, 6.809094], - [-57.542219, 6.321268], - [-57.147436, 5.97315], - [-57.307246, 5.073567], - [-57.914289, 4.812626], - [-57.86021, 4.576801], - [-58.044694, 4.060864], - [-57.601569, 3.334655], - [-57.281433, 3.333492], - [-57.150098, 2.768927], - [-56.539386, 1.899523], - [-56.782704, 1.863711], - [-57.335823, 1.948538], - [-57.660971, 1.682585], - [-58.11345, 1.507195], - [-58.429477, 1.463942], - [-58.540013, 1.268088], - [-59.030862, 1.317698], - [-59.646044, 1.786894], - [-59.718546, 2.24963], - [-59.974525, 2.755233], - [-59.815413, 3.606499], - [-59.53804, 3.958803], - [-59.767406, 4.423503], - [-60.111002, 4.574967], - [-59.980959, 5.014061], - [-60.213683, 5.244486], - [-60.733574, 5.200277], - [-61.410303, 5.959068], - [-61.139415, 6.234297], - [-61.159336, 6.696077], - [-60.543999, 6.856584], - [-60.295668, 7.043911], - [-60.637973, 7.415], - [-60.550588, 7.779603], - [-59.758285, 8.367035] - ] - ] - }, - "id": "GUY" - }, - { - "type": "Feature", - "properties": { "name": "Honduras" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-87.316654, 12.984686], - [-87.489409, 13.297535], - [-87.793111, 13.38448], - [-87.723503, 13.78505], - [-87.859515, 13.893312], - [-88.065343, 13.964626], - [-88.503998, 13.845486], - [-88.541231, 13.980155], - [-88.843073, 14.140507], - [-89.058512, 14.340029], - [-89.353326, 14.424133], - [-89.145535, 14.678019], - [-89.22522, 14.874286], - [-89.154811, 15.066419], - [-88.68068, 15.346247], - [-88.225023, 15.727722], - [-88.121153, 15.688655], - [-87.901813, 15.864458], - [-87.61568, 15.878799], - [-87.522921, 15.797279], - [-87.367762, 15.84694], - [-86.903191, 15.756713], - [-86.440946, 15.782835], - [-86.119234, 15.893449], - [-86.001954, 16.005406], - [-85.683317, 15.953652], - [-85.444004, 15.885749], - [-85.182444, 15.909158], - [-84.983722, 15.995923], - [-84.52698, 15.857224], - [-84.368256, 15.835158], - [-84.063055, 15.648244], - [-83.773977, 15.424072], - [-83.410381, 15.270903], - [-83.147219, 14.995829], - [-83.489989, 15.016267], - [-83.628585, 14.880074], - [-83.975721, 14.749436], - [-84.228342, 14.748764], - [-84.449336, 14.621614], - [-84.649582, 14.666805], - [-84.820037, 14.819587], - [-84.924501, 14.790493], - [-85.052787, 14.551541], - [-85.148751, 14.560197], - [-85.165365, 14.35437], - [-85.514413, 14.079012], - [-85.698665, 13.960078], - [-85.801295, 13.836055], - [-86.096264, 14.038187], - [-86.312142, 13.771356], - [-86.520708, 13.778487], - [-86.755087, 13.754845], - [-86.733822, 13.263093], - [-86.880557, 13.254204], - [-87.005769, 13.025794], - [-87.316654, 12.984686] - ] - ] - }, - "id": "HND" - }, - { - "type": "Feature", - "properties": { "name": "Croatia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [18.829838, 45.908878], - [19.072769, 45.521511], - [19.390476, 45.236516], - [19.005486, 44.860234], - [18.553214, 45.08159], - [17.861783, 45.06774], - [17.002146, 45.233777], - [16.534939, 45.211608], - [16.318157, 45.004127], - [15.959367, 45.233777], - [15.750026, 44.818712], - [16.23966, 44.351143], - [16.456443, 44.04124], - [16.916156, 43.667722], - [17.297373, 43.446341], - [17.674922, 43.028563], - [18.56, 42.65], - [18.450016, 42.479991], - [17.50997, 42.849995], - [16.930006, 43.209998], - [16.015385, 43.507215], - [15.174454, 44.243191], - [15.37625, 44.317915], - [14.920309, 44.738484], - [14.901602, 45.07606], - [14.258748, 45.233777], - [13.952255, 44.802124], - [13.656976, 45.136935], - [13.679403, 45.484149], - [13.71506, 45.500324], - [14.411968, 45.466166], - [14.595109, 45.634941], - [14.935244, 45.471695], - [15.327675, 45.452316], - [15.323954, 45.731783], - [15.67153, 45.834154], - [15.768733, 46.238108], - [16.564808, 46.503751], - [16.882515, 46.380632], - [17.630066, 45.951769], - [18.456062, 45.759481], - [18.829838, 45.908878] - ] - ] - }, - "id": "HRV" - }, - { - "type": "Feature", - "properties": { "name": "Haiti" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-73.189791, 19.915684], - [-72.579673, 19.871501], - [-71.712361, 19.714456], - [-71.624873, 19.169838], - [-71.701303, 18.785417], - [-71.945112, 18.6169], - [-71.687738, 18.31666], - [-71.708305, 18.044997], - [-72.372476, 18.214961], - [-72.844411, 18.145611], - [-73.454555, 18.217906], - [-73.922433, 18.030993], - [-74.458034, 18.34255], - [-74.369925, 18.664908], - [-73.449542, 18.526053], - [-72.694937, 18.445799], - [-72.334882, 18.668422], - [-72.79165, 19.101625], - [-72.784105, 19.483591], - [-73.415022, 19.639551], - [-73.189791, 19.915684] - ] - ] - }, - "id": "HTI" - }, - { - "type": "Feature", - "properties": { "name": "Hungary" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.202298, 46.852386], - [16.534268, 47.496171], - [16.340584, 47.712902], - [16.903754, 47.714866], - [16.979667, 48.123497], - [17.488473, 47.867466], - [17.857133, 47.758429], - [18.696513, 47.880954], - [18.777025, 48.081768], - [19.174365, 48.111379], - [19.661364, 48.266615], - [19.769471, 48.202691], - [20.239054, 48.327567], - [20.473562, 48.56285], - [20.801294, 48.623854], - [21.872236, 48.319971], - [22.085608, 48.422264], - [22.64082, 48.15024], - [22.710531, 47.882194], - [22.099768, 47.672439], - [21.626515, 46.994238], - [21.021952, 46.316088], - [20.220192, 46.127469], - [19.596045, 46.17173], - [18.829838, 45.908878], - [18.456062, 45.759481], - [17.630066, 45.951769], - [16.882515, 46.380632], - [16.564808, 46.503751], - [16.370505, 46.841327], - [16.202298, 46.852386] - ] - ] - }, - "id": "HUN" - }, - { - "type": "Feature", - "properties": { "name": "Indonesia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [120.715609, -10.239581], - [120.295014, -10.25865], - [118.967808, -9.557969], - [119.90031, -9.36134], - [120.425756, -9.665921], - [120.775502, -9.969675], - [120.715609, -10.239581] - ] - ], - [ - [ - [124.43595, -10.140001], - [123.579982, -10.359987], - [123.459989, -10.239995], - [123.550009, -9.900016], - [123.980009, -9.290027], - [124.968682, -8.89279], - [125.07002, -9.089987], - [125.08852, -9.393173], - [124.43595, -10.140001] - ] - ], - [ - [ - [117.900018, -8.095681], - [118.260616, -8.362383], - [118.87846, -8.280683], - [119.126507, -8.705825], - [117.970402, -8.906639], - [117.277731, -9.040895], - [116.740141, -9.032937], - [117.083737, -8.457158], - [117.632024, -8.449303], - [117.900018, -8.095681] - ] - ], - [ - [ - [122.903537, -8.094234], - [122.756983, -8.649808], - [121.254491, -8.933666], - [119.924391, -8.810418], - [119.920929, -8.444859], - [120.715092, -8.236965], - [121.341669, -8.53674], - [122.007365, -8.46062], - [122.903537, -8.094234] - ] - ], - [ - [ - [108.623479, -6.777674], - [110.539227, -6.877358], - [110.759576, -6.465186], - [112.614811, -6.946036], - [112.978768, -7.594213], - [114.478935, -7.776528], - [115.705527, -8.370807], - [114.564511, -8.751817], - [113.464734, -8.348947], - [112.559672, -8.376181], - [111.522061, -8.302129], - [110.58615, -8.122605], - [109.427667, -7.740664], - [108.693655, -7.6416], - [108.277763, -7.766657], - [106.454102, -7.3549], - [106.280624, -6.9249], - [105.365486, -6.851416], - [106.051646, -5.895919], - [107.265009, -5.954985], - [108.072091, -6.345762], - [108.486846, -6.421985], - [108.623479, -6.777674] - ] - ], - [ - [ - [134.724624, -6.214401], - [134.210134, -6.895238], - [134.112776, -6.142467], - [134.290336, -5.783058], - [134.499625, -5.445042], - [134.727002, -5.737582], - [134.724624, -6.214401] - ] - ], - [ - [ - [127.249215, -3.459065], - [126.874923, -3.790983], - [126.183802, -3.607376], - [125.989034, -3.177273], - [127.000651, -3.129318], - [127.249215, -3.459065] - ] - ], - [ - [ - [130.471344, -3.093764], - [130.834836, -3.858472], - [129.990547, -3.446301], - [129.155249, -3.362637], - [128.590684, -3.428679], - [127.898891, -3.393436], - [128.135879, -2.84365], - [129.370998, -2.802154], - [130.471344, -3.093764] - ] - ], - [ - [ - [134.143368, -1.151867], - [134.422627, -2.769185], - [135.457603, -3.367753], - [136.293314, -2.307042], - [137.440738, -1.703513], - [138.329727, -1.702686], - [139.184921, -2.051296], - [139.926684, -2.409052], - [141.00021, -2.600151], - [141.017057, -5.859022], - [141.033852, -9.117893], - [140.143415, -8.297168], - [139.127767, -8.096043], - [138.881477, -8.380935], - [137.614474, -8.411683], - [138.039099, -7.597882], - [138.668621, -7.320225], - [138.407914, -6.232849], - [137.92784, -5.393366], - [135.98925, -4.546544], - [135.164598, -4.462931], - [133.66288, -3.538853], - [133.367705, -4.024819], - [132.983956, -4.112979], - [132.756941, -3.746283], - [132.753789, -3.311787], - [131.989804, -2.820551], - [133.066845, -2.460418], - [133.780031, -2.479848], - [133.696212, -2.214542], - [132.232373, -2.212526], - [131.836222, -1.617162], - [130.94284, -1.432522], - [130.519558, -0.93772], - [131.867538, -0.695461], - [132.380116, -0.369538], - [133.985548, -0.78021], - [134.143368, -1.151867] - ] - ], - [ - [ - [125.240501, 1.419836], - [124.437035, 0.427881], - [123.685505, 0.235593], - [122.723083, 0.431137], - [121.056725, 0.381217], - [120.183083, 0.237247], - [120.04087, -0.519658], - [120.935905, -1.408906], - [121.475821, -0.955962], - [123.340565, -0.615673], - [123.258399, -1.076213], - [122.822715, -0.930951], - [122.38853, -1.516858], - [121.508274, -1.904483], - [122.454572, -3.186058], - [122.271896, -3.5295], - [123.170963, -4.683693], - [123.162333, -5.340604], - [122.628515, -5.634591], - [122.236394, -5.282933], - [122.719569, -4.464172], - [121.738234, -4.851331], - [121.489463, -4.574553], - [121.619171, -4.188478], - [120.898182, -3.602105], - [120.972389, -2.627643], - [120.305453, -2.931604], - [120.390047, -4.097579], - [120.430717, -5.528241], - [119.796543, -5.6734], - [119.366906, -5.379878], - [119.653606, -4.459417], - [119.498835, -3.494412], - [119.078344, -3.487022], - [118.767769, -2.801999], - [119.180974, -2.147104], - [119.323394, -1.353147], - [119.825999, 0.154254], - [120.035702, 0.566477], - [120.885779, 1.309223], - [121.666817, 1.013944], - [122.927567, 0.875192], - [124.077522, 0.917102], - [125.065989, 1.643259], - [125.240501, 1.419836] - ] - ], - [ - [ - [128.688249, 1.132386], - [128.635952, 0.258486], - [128.12017, 0.356413], - [127.968034, -0.252077], - [128.379999, -0.780004], - [128.100016, -0.899996], - [127.696475, -0.266598], - [127.39949, 1.011722], - [127.600512, 1.810691], - [127.932378, 2.174596], - [128.004156, 1.628531], - [128.594559, 1.540811], - [128.688249, 1.132386] - ] - ], - [ - [ - [117.875627, 1.827641], - [118.996747, 0.902219], - [117.811858, 0.784242], - [117.478339, 0.102475], - [117.521644, -0.803723], - [116.560048, -1.487661], - [116.533797, -2.483517], - [116.148084, -4.012726], - [116.000858, -3.657037], - [114.864803, -4.106984], - [114.468652, -3.495704], - [113.755672, -3.43917], - [113.256994, -3.118776], - [112.068126, -3.478392], - [111.703291, -2.994442], - [111.04824, -3.049426], - [110.223846, -2.934032], - [110.070936, -1.592874], - [109.571948, -1.314907], - [109.091874, -0.459507], - [108.952658, 0.415375], - [109.069136, 1.341934], - [109.66326, 2.006467], - [109.830227, 1.338136], - [110.514061, 0.773131], - [111.159138, 0.976478], - [111.797548, 0.904441], - [112.380252, 1.410121], - [112.859809, 1.49779], - [113.80585, 1.217549], - [114.621355, 1.430688], - [115.134037, 2.821482], - [115.519078, 3.169238], - [115.865517, 4.306559], - [117.015214, 4.306094], - [117.882035, 4.137551], - [117.313232, 3.234428], - [118.04833, 2.28769], - [117.875627, 1.827641] - ] - ], - [ - [ - [105.817655, -5.852356], - [104.710384, -5.873285], - [103.868213, -5.037315], - [102.584261, -4.220259], - [102.156173, -3.614146], - [101.399113, -2.799777], - [100.902503, -2.050262], - [100.141981, -0.650348], - [99.26374, 0.183142], - [98.970011, 1.042882], - [98.601351, 1.823507], - [97.699598, 2.453184], - [97.176942, 3.308791], - [96.424017, 3.86886], - [95.380876, 4.970782], - [95.293026, 5.479821], - [95.936863, 5.439513], - [97.484882, 5.246321], - [98.369169, 4.26837], - [99.142559, 3.59035], - [99.693998, 3.174329], - [100.641434, 2.099381], - [101.658012, 2.083697], - [102.498271, 1.3987], - [103.07684, 0.561361], - [103.838396, 0.104542], - [103.437645, -0.711946], - [104.010789, -1.059212], - [104.369991, -1.084843], - [104.53949, -1.782372], - [104.887893, -2.340425], - [105.622111, -2.428844], - [106.108593, -3.061777], - [105.857446, -4.305525], - [105.817655, -5.852356] - ] - ] - ] - }, - "id": "IDN" - }, - { - "type": "Feature", - "properties": { "name": "India" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [77.837451, 35.49401], - [78.912269, 34.321936], - [78.811086, 33.506198], - [79.208892, 32.994395], - [79.176129, 32.48378], - [78.458446, 32.618164], - [78.738894, 31.515906], - [79.721367, 30.882715], - [81.111256, 30.183481], - [80.476721, 29.729865], - [80.088425, 28.79447], - [81.057203, 28.416095], - [81.999987, 27.925479], - [83.304249, 27.364506], - [84.675018, 27.234901], - [85.251779, 26.726198], - [86.024393, 26.630985], - [87.227472, 26.397898], - [88.060238, 26.414615], - [88.174804, 26.810405], - [88.043133, 27.445819], - [88.120441, 27.876542], - [88.730326, 28.086865], - [88.814248, 27.299316], - [88.835643, 27.098966], - [89.744528, 26.719403], - [90.373275, 26.875724], - [91.217513, 26.808648], - [92.033484, 26.83831], - [92.103712, 27.452614], - [91.696657, 27.771742], - [92.503119, 27.896876], - [93.413348, 28.640629], - [94.56599, 29.277438], - [95.404802, 29.031717], - [96.117679, 29.452802], - [96.586591, 28.83098], - [96.248833, 28.411031], - [97.327114, 28.261583], - [97.402561, 27.882536], - [97.051989, 27.699059], - [97.133999, 27.083774], - [96.419366, 27.264589], - [95.124768, 26.573572], - [95.155153, 26.001307], - [94.603249, 25.162495], - [94.552658, 24.675238], - [94.106742, 23.850741], - [93.325188, 24.078556], - [93.286327, 23.043658], - [93.060294, 22.703111], - [93.166128, 22.27846], - [92.672721, 22.041239], - [92.146035, 23.627499], - [91.869928, 23.624346], - [91.706475, 22.985264], - [91.158963, 23.503527], - [91.46773, 24.072639], - [91.915093, 24.130414], - [92.376202, 24.976693], - [91.799596, 25.147432], - [90.872211, 25.132601], - [89.920693, 25.26975], - [89.832481, 25.965082], - [89.355094, 26.014407], - [88.563049, 26.446526], - [88.209789, 25.768066], - [88.931554, 25.238692], - [88.306373, 24.866079], - [88.084422, 24.501657], - [88.69994, 24.233715], - [88.52977, 23.631142], - [88.876312, 22.879146], - [89.031961, 22.055708], - [88.888766, 21.690588], - [88.208497, 21.703172], - [86.975704, 21.495562], - [87.033169, 20.743308], - [86.499351, 20.151638], - [85.060266, 19.478579], - [83.941006, 18.30201], - [83.189217, 17.671221], - [82.192792, 17.016636], - [82.191242, 16.556664], - [81.692719, 16.310219], - [80.791999, 15.951972], - [80.324896, 15.899185], - [80.025069, 15.136415], - [80.233274, 13.835771], - [80.286294, 13.006261], - [79.862547, 12.056215], - [79.857999, 10.357275], - [79.340512, 10.308854], - [78.885345, 9.546136], - [79.18972, 9.216544], - [78.277941, 8.933047], - [77.941165, 8.252959], - [77.539898, 7.965535], - [76.592979, 8.899276], - [76.130061, 10.29963], - [75.746467, 11.308251], - [75.396101, 11.781245], - [74.864816, 12.741936], - [74.616717, 13.992583], - [74.443859, 14.617222], - [73.534199, 15.990652], - [73.119909, 17.92857], - [72.820909, 19.208234], - [72.824475, 20.419503], - [72.630533, 21.356009], - [71.175273, 20.757441], - [70.470459, 20.877331], - [69.16413, 22.089298], - [69.644928, 22.450775], - [69.349597, 22.84318], - [68.176645, 23.691965], - [68.842599, 24.359134], - [71.04324, 24.356524], - [70.844699, 25.215102], - [70.282873, 25.722229], - [70.168927, 26.491872], - [69.514393, 26.940966], - [70.616496, 27.989196], - [71.777666, 27.91318], - [72.823752, 28.961592], - [73.450638, 29.976413], - [74.42138, 30.979815], - [74.405929, 31.692639], - [75.258642, 32.271105], - [74.451559, 32.7649], - [74.104294, 33.441473], - [73.749948, 34.317699], - [74.240203, 34.748887], - [75.757061, 34.504923], - [76.871722, 34.653544], - [77.837451, 35.49401] - ] - ] - }, - "id": "IND" - }, - { - "type": "Feature", - "properties": { "name": "Ireland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-6.197885, 53.867565], - [-6.032985, 53.153164], - [-6.788857, 52.260118], - [-8.561617, 51.669301], - [-9.977086, 51.820455], - [-9.166283, 52.864629], - [-9.688525, 53.881363], - [-8.327987, 54.664519], - [-7.572168, 55.131622], - [-7.366031, 54.595841], - [-7.572168, 54.059956], - [-6.95373, 54.073702], - [-6.197885, 53.867565] - ] - ] - }, - "id": "IRL" - }, - { - "type": "Feature", - "properties": { "name": "Iran" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [53.921598, 37.198918], - [54.800304, 37.392421], - [55.511578, 37.964117], - [56.180375, 37.935127], - [56.619366, 38.121394], - [57.330434, 38.029229], - [58.436154, 37.522309], - [59.234762, 37.412988], - [60.377638, 36.527383], - [61.123071, 36.491597], - [61.210817, 35.650072], - [60.803193, 34.404102], - [60.52843, 33.676446], - [60.9637, 33.528832], - [60.536078, 32.981269], - [60.863655, 32.18292], - [60.941945, 31.548075], - [61.699314, 31.379506], - [61.781222, 30.73585], - [60.874248, 29.829239], - [61.369309, 29.303276], - [61.771868, 28.699334], - [62.72783, 28.259645], - [62.755426, 27.378923], - [63.233898, 27.217047], - [63.316632, 26.756532], - [61.874187, 26.239975], - [61.497363, 25.078237], - [59.616134, 25.380157], - [58.525761, 25.609962], - [57.397251, 25.739902], - [56.970766, 26.966106], - [56.492139, 27.143305], - [55.72371, 26.964633], - [54.71509, 26.480658], - [53.493097, 26.812369], - [52.483598, 27.580849], - [51.520763, 27.86569], - [50.852948, 28.814521], - [50.115009, 30.147773], - [49.57685, 29.985715], - [48.941333, 30.31709], - [48.567971, 29.926778], - [48.014568, 30.452457], - [48.004698, 30.985137], - [47.685286, 30.984853], - [47.849204, 31.709176], - [47.334661, 32.469155], - [46.109362, 33.017287], - [45.416691, 33.967798], - [45.64846, 34.748138], - [46.151788, 35.093259], - [46.07634, 35.677383], - [45.420618, 35.977546], - [44.77267, 37.17045], - [44.225756, 37.971584], - [44.421403, 38.281281], - [44.109225, 39.428136], - [44.79399, 39.713003], - [44.952688, 39.335765], - [45.457722, 38.874139], - [46.143623, 38.741201], - [46.50572, 38.770605], - [47.685079, 39.508364], - [48.060095, 39.582235], - [48.355529, 39.288765], - [48.010744, 38.794015], - [48.634375, 38.270378], - [48.883249, 38.320245], - [49.199612, 37.582874], - [50.147771, 37.374567], - [50.842354, 36.872814], - [52.264025, 36.700422], - [53.82579, 36.965031], - [53.921598, 37.198918] - ] - ] - }, - "id": "IRN" - }, - { - "type": "Feature", - "properties": { "name": "Iraq" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [45.420618, 35.977546], - [46.07634, 35.677383], - [46.151788, 35.093259], - [45.64846, 34.748138], - [45.416691, 33.967798], - [46.109362, 33.017287], - [47.334661, 32.469155], - [47.849204, 31.709176], - [47.685286, 30.984853], - [48.004698, 30.985137], - [48.014568, 30.452457], - [48.567971, 29.926778], - [47.974519, 29.975819], - [47.302622, 30.05907], - [46.568713, 29.099025], - [44.709499, 29.178891], - [41.889981, 31.190009], - [40.399994, 31.889992], - [39.195468, 32.161009], - [38.792341, 33.378686], - [41.006159, 34.419372], - [41.383965, 35.628317], - [41.289707, 36.358815], - [41.837064, 36.605854], - [42.349591, 37.229873], - [42.779126, 37.385264], - [43.942259, 37.256228], - [44.293452, 37.001514], - [44.772699, 37.170445], - [45.420618, 35.977546] - ] - ] - }, - "id": "IRQ" - }, - { - "type": "Feature", - "properties": { "name": "Iceland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-14.508695, 66.455892], - [-14.739637, 65.808748], - [-13.609732, 65.126671], - [-14.909834, 64.364082], - [-17.794438, 63.678749], - [-18.656246, 63.496383], - [-19.972755, 63.643635], - [-22.762972, 63.960179], - [-21.778484, 64.402116], - [-23.955044, 64.89113], - [-22.184403, 65.084968], - [-22.227423, 65.378594], - [-24.326184, 65.611189], - [-23.650515, 66.262519], - [-22.134922, 66.410469], - [-20.576284, 65.732112], - [-19.056842, 66.276601], - [-17.798624, 65.993853], - [-16.167819, 66.526792], - [-14.508695, 66.455892] - ] - ] - }, - "id": "ISL" - }, - { - "type": "Feature", - "properties": { "name": "Israel" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.719918, 32.709192], - [35.545665, 32.393992], - [35.18393, 32.532511], - [34.974641, 31.866582], - [35.225892, 31.754341], - [34.970507, 31.616778], - [34.927408, 31.353435], - [35.397561, 31.489086], - [35.420918, 31.100066], - [34.922603, 29.501326], - [34.265433, 31.219361], - [34.556372, 31.548824], - [34.488107, 31.605539], - [34.752587, 32.072926], - [34.955417, 32.827376], - [35.098457, 33.080539], - [35.126053, 33.0909], - [35.460709, 33.08904], - [35.552797, 33.264275], - [35.821101, 33.277426], - [35.836397, 32.868123], - [35.700798, 32.716014], - [35.719918, 32.709192] - ] - ] - }, - "id": "ISR" - }, - { - "type": "Feature", - "properties": { "name": "Italy" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [15.520376, 38.231155], - [15.160243, 37.444046], - [15.309898, 37.134219], - [15.099988, 36.619987], - [14.335229, 36.996631], - [13.826733, 37.104531], - [12.431004, 37.61295], - [12.570944, 38.126381], - [13.741156, 38.034966], - [14.761249, 38.143874], - [15.520376, 38.231155] - ] - ], - [ - [ - [9.210012, 41.209991], - [9.809975, 40.500009], - [9.669519, 39.177376], - [9.214818, 39.240473], - [8.806936, 38.906618], - [8.428302, 39.171847], - [8.388253, 40.378311], - [8.159998, 40.950007], - [8.709991, 40.899984], - [9.210012, 41.209991] - ] - ], - [ - [ - [12.376485, 46.767559], - [13.806475, 46.509306], - [13.69811, 46.016778], - [13.93763, 45.591016], - [13.141606, 45.736692], - [12.328581, 45.381778], - [12.383875, 44.885374], - [12.261453, 44.600482], - [12.589237, 44.091366], - [13.526906, 43.587727], - [14.029821, 42.761008], - [15.14257, 41.95514], - [15.926191, 41.961315], - [16.169897, 41.740295], - [15.889346, 41.541082], - [16.785002, 41.179606], - [17.519169, 40.877143], - [18.376687, 40.355625], - [18.480247, 40.168866], - [18.293385, 39.810774], - [17.73838, 40.277671], - [16.869596, 40.442235], - [16.448743, 39.795401], - [17.17149, 39.4247], - [17.052841, 38.902871], - [16.635088, 38.843572], - [16.100961, 37.985899], - [15.684087, 37.908849], - [15.687963, 38.214593], - [15.891981, 38.750942], - [16.109332, 38.964547], - [15.718814, 39.544072], - [15.413613, 40.048357], - [14.998496, 40.172949], - [14.703268, 40.60455], - [14.060672, 40.786348], - [13.627985, 41.188287], - [12.888082, 41.25309], - [12.106683, 41.704535], - [11.191906, 42.355425], - [10.511948, 42.931463], - [10.200029, 43.920007], - [9.702488, 44.036279], - [8.888946, 44.366336], - [8.428561, 44.231228], - [7.850767, 43.767148], - [7.435185, 43.693845], - [7.549596, 44.127901], - [7.007562, 44.254767], - [6.749955, 45.028518], - [7.096652, 45.333099], - [6.802355, 45.70858], - [6.843593, 45.991147], - [7.273851, 45.776948], - [7.755992, 45.82449], - [8.31663, 46.163642], - [8.489952, 46.005151], - [8.966306, 46.036932], - [9.182882, 46.440215], - [9.922837, 46.314899], - [10.363378, 46.483571], - [10.442701, 46.893546], - [11.048556, 46.751359], - [11.164828, 46.941579], - [12.153088, 47.115393], - [12.376485, 46.767559] - ] - ] - ] - }, - "id": "ITA" - }, - { - "type": "Feature", - "properties": { "name": "Jamaica" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-77.569601, 18.490525], - [-76.896619, 18.400867], - [-76.365359, 18.160701], - [-76.199659, 17.886867], - [-76.902561, 17.868238], - [-77.206341, 17.701116], - [-77.766023, 17.861597], - [-78.337719, 18.225968], - [-78.217727, 18.454533], - [-77.797365, 18.524218], - [-77.569601, 18.490525] - ] - ] - }, - "id": "JAM" - }, - { - "type": "Feature", - "properties": { "name": "Jordan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.545665, 32.393992], - [35.719918, 32.709192], - [36.834062, 32.312938], - [38.792341, 33.378686], - [39.195468, 32.161009], - [39.004886, 32.010217], - [37.002166, 31.508413], - [37.998849, 30.5085], - [37.66812, 30.338665], - [37.503582, 30.003776], - [36.740528, 29.865283], - [36.501214, 29.505254], - [36.068941, 29.197495], - [34.956037, 29.356555], - [34.922603, 29.501326], - [35.420918, 31.100066], - [35.397561, 31.489086], - [35.545252, 31.782505], - [35.545665, 32.393992] - ] - ] - }, - "id": "JOR" - }, - { - "type": "Feature", - "properties": { "name": "Japan" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [134.638428, 34.149234], - [134.766379, 33.806335], - [134.203416, 33.201178], - [133.79295, 33.521985], - [133.280268, 33.28957], - [133.014858, 32.704567], - [132.363115, 32.989382], - [132.371176, 33.463642], - [132.924373, 34.060299], - [133.492968, 33.944621], - [133.904106, 34.364931], - [134.638428, 34.149234] - ] - ], - [ - [ - [140.976388, 37.142074], - [140.59977, 36.343983], - [140.774074, 35.842877], - [140.253279, 35.138114], - [138.975528, 34.6676], - [137.217599, 34.606286], - [135.792983, 33.464805], - [135.120983, 33.849071], - [135.079435, 34.596545], - [133.340316, 34.375938], - [132.156771, 33.904933], - [130.986145, 33.885761], - [132.000036, 33.149992], - [131.33279, 31.450355], - [130.686318, 31.029579], - [130.20242, 31.418238], - [130.447676, 32.319475], - [129.814692, 32.61031], - [129.408463, 33.296056], - [130.353935, 33.604151], - [130.878451, 34.232743], - [131.884229, 34.749714], - [132.617673, 35.433393], - [134.608301, 35.731618], - [135.677538, 35.527134], - [136.723831, 37.304984], - [137.390612, 36.827391], - [138.857602, 37.827485], - [139.426405, 38.215962], - [140.05479, 39.438807], - [139.883379, 40.563312], - [140.305783, 41.195005], - [141.368973, 41.37856], - [141.914263, 39.991616], - [141.884601, 39.180865], - [140.959489, 38.174001], - [140.976388, 37.142074] - ] - ], - [ - [ - [143.910162, 44.1741], - [144.613427, 43.960883], - [145.320825, 44.384733], - [145.543137, 43.262088], - [144.059662, 42.988358], - [143.18385, 41.995215], - [141.611491, 42.678791], - [141.067286, 41.584594], - [139.955106, 41.569556], - [139.817544, 42.563759], - [140.312087, 43.333273], - [141.380549, 43.388825], - [141.671952, 44.772125], - [141.967645, 45.551483], - [143.14287, 44.510358], - [143.910162, 44.1741] - ] - ] - ] - }, - "id": "JPN" - }, - { - "type": "Feature", - "properties": { "name": "Kazakhstan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [70.962315, 42.266154], - [70.388965, 42.081308], - [69.070027, 41.384244], - [68.632483, 40.668681], - [68.259896, 40.662325], - [67.985856, 41.135991], - [66.714047, 41.168444], - [66.510649, 41.987644], - [66.023392, 41.994646], - [66.098012, 42.99766], - [64.900824, 43.728081], - [63.185787, 43.650075], - [62.0133, 43.504477], - [61.05832, 44.405817], - [60.239972, 44.784037], - [58.689989, 45.500014], - [58.503127, 45.586804], - [55.928917, 44.995858], - [55.968191, 41.308642], - [55.455251, 41.259859], - [54.755345, 42.043971], - [54.079418, 42.324109], - [52.944293, 42.116034], - [52.50246, 41.783316], - [52.446339, 42.027151], - [52.692112, 42.443895], - [52.501426, 42.792298], - [51.342427, 43.132975], - [50.891292, 44.031034], - [50.339129, 44.284016], - [50.305643, 44.609836], - [51.278503, 44.514854], - [51.316899, 45.245998], - [52.16739, 45.408391], - [53.040876, 45.259047], - [53.220866, 46.234646], - [53.042737, 46.853006], - [52.042023, 46.804637], - [51.191945, 47.048705], - [50.034083, 46.60899], - [49.10116, 46.39933], - [48.593241, 46.561034], - [48.694734, 47.075628], - [48.057253, 47.743753], - [47.315231, 47.715847], - [46.466446, 48.394152], - [47.043672, 49.152039], - [46.751596, 49.356006], - [47.54948, 50.454698], - [48.577841, 49.87476], - [48.702382, 50.605128], - [50.766648, 51.692762], - [52.328724, 51.718652], - [54.532878, 51.02624], - [55.716941, 50.621717], - [56.777961, 51.043551], - [58.363291, 51.063653], - [59.642282, 50.545442], - [59.932807, 50.842194], - [61.337424, 50.79907], - [61.588003, 51.272659], - [59.967534, 51.96042], - [60.927269, 52.447548], - [60.739993, 52.719986], - [61.699986, 52.979996], - [60.978066, 53.664993], - [61.436591, 54.006265], - [65.178534, 54.354228], - [65.666876, 54.601267], - [68.1691, 54.970392], - [69.068167, 55.38525], - [70.865267, 55.169734], - [71.180131, 54.133285], - [72.22415, 54.376655], - [73.508516, 54.035617], - [73.425679, 53.48981], - [74.384845, 53.546861], - [76.8911, 54.490524], - [76.525179, 54.177003], - [77.800916, 53.404415], - [80.03556, 50.864751], - [80.568447, 51.388336], - [81.945986, 50.812196], - [83.383004, 51.069183], - [83.935115, 50.889246], - [84.416377, 50.3114], - [85.11556, 50.117303], - [85.54127, 49.692859], - [86.829357, 49.826675], - [87.35997, 49.214981], - [86.598776, 48.549182], - [85.768233, 48.455751], - [85.720484, 47.452969], - [85.16429, 47.000956], - [83.180484, 47.330031], - [82.458926, 45.53965], - [81.947071, 45.317027], - [79.966106, 44.917517], - [80.866206, 43.180362], - [80.18015, 42.920068], - [80.25999, 42.349999], - [79.643645, 42.496683], - [79.142177, 42.856092], - [77.658392, 42.960686], - [76.000354, 42.988022], - [75.636965, 42.8779], - [74.212866, 43.298339], - [73.645304, 43.091272], - [73.489758, 42.500894], - [71.844638, 42.845395], - [71.186281, 42.704293], - [70.962315, 42.266154] - ] - ] - }, - "id": "KAZ" - }, - { - "type": "Feature", - "properties": { "name": "Kenya" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [40.993, -0.85829], - [41.58513, -1.68325], - [40.88477, -2.08255], - [40.63785, -2.49979], - [40.26304, -2.57309], - [40.12119, -3.27768], - [39.80006, -3.68116], - [39.60489, -4.34653], - [39.20222, -4.67677], - [37.7669, -3.67712], - [37.69869, -3.09699], - [34.07262, -1.05982], - [33.903711, -0.95], - [33.893569, 0.109814], - [34.18, 0.515], - [34.6721, 1.17694], - [35.03599, 1.90584], - [34.59607, 3.05374], - [34.47913, 3.5556], - [34.005, 4.249885], - [34.620196, 4.847123], - [35.298007, 5.506], - [35.817448, 5.338232], - [35.817448, 4.776966], - [36.159079, 4.447864], - [36.855093, 4.447864], - [38.120915, 3.598605], - [38.43697, 3.58851], - [38.67114, 3.61607], - [38.89251, 3.50074], - [39.559384, 3.42206], - [39.85494, 3.83879], - [40.76848, 4.25702], - [41.1718, 3.91909], - [41.855083, 3.918912], - [40.98105, 2.78452], - [40.993, -0.85829] - ] - ] - }, - "id": "KEN" - }, - { - "type": "Feature", - "properties": { "name": "Kyrgyzstan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [70.962315, 42.266154], - [71.186281, 42.704293], - [71.844638, 42.845395], - [73.489758, 42.500894], - [73.645304, 43.091272], - [74.212866, 43.298339], - [75.636965, 42.8779], - [76.000354, 42.988022], - [77.658392, 42.960686], - [79.142177, 42.856092], - [79.643645, 42.496683], - [80.25999, 42.349999], - [80.11943, 42.123941], - [78.543661, 41.582243], - [78.187197, 41.185316], - [76.904484, 41.066486], - [76.526368, 40.427946], - [75.467828, 40.562072], - [74.776862, 40.366425], - [73.822244, 39.893973], - [73.960013, 39.660008], - [73.675379, 39.431237], - [71.784694, 39.279463], - [70.549162, 39.604198], - [69.464887, 39.526683], - [69.55961, 40.103211], - [70.648019, 39.935754], - [71.014198, 40.244366], - [71.774875, 40.145844], - [73.055417, 40.866033], - [71.870115, 41.3929], - [71.157859, 41.143587], - [70.420022, 41.519998], - [71.259248, 42.167711], - [70.962315, 42.266154] - ] - ] - }, - "id": "KGZ" - }, - { - "type": "Feature", - "properties": { "name": "Cambodia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [103.49728, 10.632555], - [103.09069, 11.153661], - [102.584932, 12.186595], - [102.348099, 13.394247], - [102.988422, 14.225721], - [104.281418, 14.416743], - [105.218777, 14.273212], - [106.043946, 13.881091], - [106.496373, 14.570584], - [107.382727, 14.202441], - [107.614548, 13.535531], - [107.491403, 12.337206], - [105.810524, 11.567615], - [106.24967, 10.961812], - [105.199915, 10.88931], - [104.334335, 10.486544], - [103.49728, 10.632555] - ] - ] - }, - "id": "KHM" - }, - { - "type": "Feature", - "properties": { "name": "South Korea" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [128.349716, 38.612243], - [129.21292, 37.432392], - [129.46045, 36.784189], - [129.468304, 35.632141], - [129.091377, 35.082484], - [128.18585, 34.890377], - [127.386519, 34.475674], - [126.485748, 34.390046], - [126.37392, 34.93456], - [126.559231, 35.684541], - [126.117398, 36.725485], - [126.860143, 36.893924], - [126.174759, 37.749686], - [126.237339, 37.840378], - [126.68372, 37.804773], - [127.073309, 38.256115], - [127.780035, 38.304536], - [128.205746, 38.370397], - [128.349716, 38.612243] - ] - ] - }, - "id": "KOR" - }, - { - "type": "Feature", - "properties": { "name": "Kosovo" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.76216, 42.05186], - [20.71731, 41.84711], - [20.59023, 41.85541], - [20.52295, 42.21787], - [20.28374, 42.32025], - [20.0707, 42.58863], - [20.25758, 42.81275], - [20.49679, 42.88469], - [20.63508, 43.21671], - [20.81448, 43.27205], - [20.95651, 43.13094], - [21.143395, 43.068685], - [21.27421, 42.90959], - [21.43866, 42.86255], - [21.63302, 42.67717], - [21.77505, 42.6827], - [21.66292, 42.43922], - [21.54332, 42.32025], - [21.576636, 42.245224], - [21.3527, 42.2068], - [20.76216, 42.05186] - ] - ] - }, - "id": "OSA" - }, - { - "type": "Feature", - "properties": { "name": "Kuwait" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [47.974519, 29.975819], - [48.183189, 29.534477], - [48.093943, 29.306299], - [48.416094, 28.552004], - [47.708851, 28.526063], - [47.459822, 29.002519], - [46.568713, 29.099025], - [47.302622, 30.05907], - [47.974519, 29.975819] - ] - ] - }, - "id": "KWT" - }, - { - "type": "Feature", - "properties": { "name": "Laos" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [105.218777, 14.273212], - [105.544338, 14.723934], - [105.589039, 15.570316], - [104.779321, 16.441865], - [104.716947, 17.428859], - [103.956477, 18.240954], - [103.200192, 18.309632], - [102.998706, 17.961695], - [102.413005, 17.932782], - [102.113592, 18.109102], - [101.059548, 17.512497], - [101.035931, 18.408928], - [101.282015, 19.462585], - [100.606294, 19.508344], - [100.548881, 20.109238], - [100.115988, 20.41785], - [100.329101, 20.786122], - [101.180005, 21.436573], - [101.270026, 21.201652], - [101.80312, 21.174367], - [101.652018, 22.318199], - [102.170436, 22.464753], - [102.754896, 21.675137], - [103.203861, 20.766562], - [104.435, 20.758733], - [104.822574, 19.886642], - [104.183388, 19.624668], - [103.896532, 19.265181], - [105.094598, 18.666975], - [105.925762, 17.485315], - [106.556008, 16.604284], - [107.312706, 15.908538], - [107.564525, 15.202173], - [107.382727, 14.202441], - [106.496373, 14.570584], - [106.043946, 13.881091], - [105.218777, 14.273212] - ] - ] - }, - "id": "LAO" - }, - { - "type": "Feature", - "properties": { "name": "Lebanon" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.821101, 33.277426], - [35.552797, 33.264275], - [35.460709, 33.08904], - [35.126053, 33.0909], - [35.482207, 33.90545], - [35.979592, 34.610058], - [35.998403, 34.644914], - [36.448194, 34.593935], - [36.61175, 34.201789], - [36.06646, 33.824912], - [35.821101, 33.277426] - ] - ] - }, - "id": "LBN" - }, - { - "type": "Feature", - "properties": { "name": "Liberia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-7.712159, 4.364566], - [-7.974107, 4.355755], - [-9.004794, 4.832419], - [-9.91342, 5.593561], - [-10.765384, 6.140711], - [-11.438779, 6.785917], - [-11.199802, 7.105846], - [-11.146704, 7.396706], - [-10.695595, 7.939464], - [-10.230094, 8.406206], - [-10.016567, 8.428504], - [-9.755342, 8.541055], - [-9.33728, 7.928534], - [-9.403348, 7.526905], - [-9.208786, 7.313921], - [-8.926065, 7.309037], - [-8.722124, 7.711674], - [-8.439298, 7.686043], - [-8.485446, 7.395208], - [-8.385452, 6.911801], - [-8.60288, 6.467564], - [-8.311348, 6.193033], - [-7.993693, 6.12619], - [-7.570153, 5.707352], - [-7.539715, 5.313345], - [-7.635368, 5.188159], - [-7.712159, 4.364566] - ] - ] - }, - "id": "LBR" - }, - { - "type": "Feature", - "properties": { "name": "Libya" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [14.8513, 22.86295], - [14.143871, 22.491289], - [13.581425, 23.040506], - [11.999506, 23.471668], - [11.560669, 24.097909], - [10.771364, 24.562532], - [10.303847, 24.379313], - [9.948261, 24.936954], - [9.910693, 25.365455], - [9.319411, 26.094325], - [9.716286, 26.512206], - [9.629056, 27.140953], - [9.756128, 27.688259], - [9.683885, 28.144174], - [9.859998, 28.95999], - [9.805634, 29.424638], - [9.48214, 30.307556], - [9.970017, 30.539325], - [10.056575, 30.961831], - [9.950225, 31.37607], - [10.636901, 31.761421], - [10.94479, 32.081815], - [11.432253, 32.368903], - [11.488787, 33.136996], - [12.66331, 32.79278], - [13.08326, 32.87882], - [13.91868, 32.71196], - [15.24563, 32.26508], - [15.71394, 31.37626], - [16.61162, 31.18218], - [18.02109, 30.76357], - [19.08641, 30.26639], - [19.57404, 30.52582], - [20.05335, 30.98576], - [19.82033, 31.75179], - [20.13397, 32.2382], - [20.85452, 32.7068], - [21.54298, 32.8432], - [22.89576, 32.63858], - [23.2368, 32.19149], - [23.60913, 32.18726], - [23.9275, 32.01667], - [24.92114, 31.89936], - [25.16482, 31.56915], - [24.80287, 31.08929], - [24.95762, 30.6616], - [24.70007, 30.04419], - [25, 29.238655], - [25, 25.6825], - [25, 22], - [25, 20.00304], - [23.85, 20], - [23.83766, 19.58047], - [19.84926, 21.49509], - [15.86085, 23.40972], - [14.8513, 22.86295] - ] - ] - }, - "id": "LBY" - }, - { - "type": "Feature", - "properties": { "name": "Sri Lanka" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [81.787959, 7.523055], - [81.637322, 6.481775], - [81.21802, 6.197141], - [80.348357, 5.96837], - [79.872469, 6.763463], - [79.695167, 8.200843], - [80.147801, 9.824078], - [80.838818, 9.268427], - [81.304319, 8.564206], - [81.787959, 7.523055] - ] - ] - }, - "id": "LKA" - }, - { - "type": "Feature", - "properties": { "name": "Lesotho" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [28.978263, -28.955597], - [29.325166, -29.257387], - [29.018415, -29.743766], - [28.8484, -30.070051], - [28.291069, -30.226217], - [28.107205, -30.545732], - [27.749397, -30.645106], - [26.999262, -29.875954], - [27.532511, -29.242711], - [28.074338, -28.851469], - [28.5417, -28.647502], - [28.978263, -28.955597] - ] - ] - }, - "id": "LSO" - }, - { - "type": "Feature", - "properties": { "name": "Lithuania" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.731099, 54.327537], - [22.651052, 54.582741], - [22.757764, 54.856574], - [22.315724, 55.015299], - [21.268449, 55.190482], - [21.0558, 56.031076], - [22.201157, 56.337802], - [23.878264, 56.273671], - [24.860684, 56.372528], - [25.000934, 56.164531], - [25.533047, 56.100297], - [26.494331, 55.615107], - [26.588279, 55.167176], - [25.768433, 54.846963], - [25.536354, 54.282423], - [24.450684, 53.905702], - [23.484128, 53.912498], - [23.243987, 54.220567], - [22.731099, 54.327537] - ] - ] - }, - "id": "LTU" - }, - { - "type": "Feature", - "properties": { "name": "Luxembourg" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [6.043073, 50.128052], - [6.242751, 49.902226], - [6.18632, 49.463803], - [5.897759, 49.442667], - [5.674052, 49.529484], - [5.782417, 50.090328], - [6.043073, 50.128052] - ] - ] - }, - "id": "LUX" - }, - { - "type": "Feature", - "properties": { "name": "Latvia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [21.0558, 56.031076], - [21.090424, 56.783873], - [21.581866, 57.411871], - [22.524341, 57.753374], - [23.318453, 57.006236], - [24.12073, 57.025693], - [24.312863, 57.793424], - [25.164594, 57.970157], - [25.60281, 57.847529], - [26.463532, 57.476389], - [27.288185, 57.474528], - [27.770016, 57.244258], - [27.855282, 56.759326], - [28.176709, 56.16913], - [27.10246, 55.783314], - [26.494331, 55.615107], - [25.533047, 56.100297], - [25.000934, 56.164531], - [24.860684, 56.372528], - [23.878264, 56.273671], - [22.201157, 56.337802], - [21.0558, 56.031076] - ] - ] - }, - "id": "LVA" - }, - { - "type": "Feature", - "properties": { "name": "Morocco" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-5.193863, 35.755182], - [-4.591006, 35.330712], - [-3.640057, 35.399855], - [-2.604306, 35.179093], - [-2.169914, 35.168396], - [-1.792986, 34.527919], - [-1.733455, 33.919713], - [-1.388049, 32.864015], - [-1.124551, 32.651522], - [-1.307899, 32.262889], - [-2.616605, 32.094346], - [-3.06898, 31.724498], - [-3.647498, 31.637294], - [-3.690441, 30.896952], - [-4.859646, 30.501188], - [-5.242129, 30.000443], - [-6.060632, 29.7317], - [-7.059228, 29.579228], - [-8.674116, 28.841289], - [-8.66559, 27.656426], - [-8.817809, 27.656426], - [-8.817828, 27.656426], - [-8.794884, 27.120696], - [-9.413037, 27.088476], - [-9.735343, 26.860945], - [-10.189424, 26.860945], - [-10.551263, 26.990808], - [-11.392555, 26.883424], - [-11.71822, 26.104092], - [-12.030759, 26.030866], - [-12.500963, 24.770116], - [-13.89111, 23.691009], - [-14.221168, 22.310163], - [-14.630833, 21.86094], - [-14.750955, 21.5006], - [-17.002962, 21.420734], - [-17.020428, 21.42231], - [-16.973248, 21.885745], - [-16.589137, 22.158234], - [-16.261922, 22.67934], - [-16.326414, 23.017768], - [-15.982611, 23.723358], - [-15.426004, 24.359134], - [-15.089332, 24.520261], - [-14.824645, 25.103533], - [-14.800926, 25.636265], - [-14.43994, 26.254418], - [-13.773805, 26.618892], - [-13.139942, 27.640148], - [-13.121613, 27.654148], - [-12.618837, 28.038186], - [-11.688919, 28.148644], - [-10.900957, 28.832142], - [-10.399592, 29.098586], - [-9.564811, 29.933574], - [-9.814718, 31.177736], - [-9.434793, 32.038096], - [-9.300693, 32.564679], - [-8.657476, 33.240245], - [-7.654178, 33.697065], - [-6.912544, 34.110476], - [-6.244342, 35.145865], - [-5.929994, 35.759988], - [-5.193863, 35.755182] - ] - ] - }, - "id": "MAR" - }, - { - "type": "Feature", - "properties": { "name": "Moldova" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [26.619337, 48.220726], - [26.857824, 48.368211], - [27.522537, 48.467119], - [28.259547, 48.155562], - [28.670891, 48.118149], - [29.122698, 47.849095], - [29.050868, 47.510227], - [29.415135, 47.346645], - [29.559674, 46.928583], - [29.908852, 46.674361], - [29.83821, 46.525326], - [30.024659, 46.423937], - [29.759972, 46.349988], - [29.170654, 46.379262], - [29.072107, 46.517678], - [28.862972, 46.437889], - [28.933717, 46.25883], - [28.659987, 45.939987], - [28.485269, 45.596907], - [28.233554, 45.488283], - [28.054443, 45.944586], - [28.160018, 46.371563], - [28.12803, 46.810476], - [27.551166, 47.405117], - [27.233873, 47.826771], - [26.924176, 48.123264], - [26.619337, 48.220726] - ] - ] - }, - "id": "MDA" - }, - { - "type": "Feature", - "properties": { "name": "Madagascar" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [49.543519, -12.469833], - [49.808981, -12.895285], - [50.056511, -13.555761], - [50.217431, -14.758789], - [50.476537, -15.226512], - [50.377111, -15.706069], - [50.200275, -16.000263], - [49.860606, -15.414253], - [49.672607, -15.710204], - [49.863344, -16.451037], - [49.774564, -16.875042], - [49.498612, -17.106036], - [49.435619, -17.953064], - [49.041792, -19.118781], - [48.548541, -20.496888], - [47.930749, -22.391501], - [47.547723, -23.781959], - [47.095761, -24.94163], - [46.282478, -25.178463], - [45.409508, -25.601434], - [44.833574, -25.346101], - [44.03972, -24.988345], - [43.763768, -24.460677], - [43.697778, -23.574116], - [43.345654, -22.776904], - [43.254187, -22.057413], - [43.433298, -21.336475], - [43.893683, -21.163307], - [43.89637, -20.830459], - [44.374325, -20.072366], - [44.464397, -19.435454], - [44.232422, -18.961995], - [44.042976, -18.331387], - [43.963084, -17.409945], - [44.312469, -16.850496], - [44.446517, -16.216219], - [44.944937, -16.179374], - [45.502732, -15.974373], - [45.872994, -15.793454], - [46.312243, -15.780018], - [46.882183, -15.210182], - [47.70513, -14.594303], - [48.005215, -14.091233], - [47.869047, -13.663869], - [48.293828, -13.784068], - [48.84506, -13.089175], - [48.863509, -12.487868], - [49.194651, -12.040557], - [49.543519, -12.469833] - ] - ] - }, - "id": "MDG" - }, - { - "type": "Feature", - "properties": { "name": "Mexico" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-97.140008, 25.869997], - [-97.528072, 24.992144], - [-97.702946, 24.272343], - [-97.776042, 22.93258], - [-97.872367, 22.444212], - [-97.699044, 21.898689], - [-97.38896, 21.411019], - [-97.189333, 20.635433], - [-96.525576, 19.890931], - [-96.292127, 19.320371], - [-95.900885, 18.828024], - [-94.839063, 18.562717], - [-94.42573, 18.144371], - [-93.548651, 18.423837], - [-92.786114, 18.524839], - [-92.037348, 18.704569], - [-91.407903, 18.876083], - [-90.77187, 19.28412], - [-90.53359, 19.867418], - [-90.451476, 20.707522], - [-90.278618, 20.999855], - [-89.601321, 21.261726], - [-88.543866, 21.493675], - [-87.658417, 21.458846], - [-87.05189, 21.543543], - [-86.811982, 21.331515], - [-86.845908, 20.849865], - [-87.383291, 20.255405], - [-87.621054, 19.646553], - [-87.43675, 19.472403], - [-87.58656, 19.04013], - [-87.837191, 18.259816], - [-88.090664, 18.516648], - [-88.300031, 18.499982], - [-88.490123, 18.486831], - [-88.848344, 17.883198], - [-89.029857, 18.001511], - [-89.150909, 17.955468], - [-89.14308, 17.808319], - [-90.067934, 17.819326], - [-91.00152, 17.817595], - [-91.002269, 17.254658], - [-91.453921, 17.252177], - [-91.08167, 16.918477], - [-90.711822, 16.687483], - [-90.600847, 16.470778], - [-90.438867, 16.41011], - [-90.464473, 16.069562], - [-91.74796, 16.066565], - [-92.229249, 15.251447], - [-92.087216, 15.064585], - [-92.20323, 14.830103], - [-92.22775, 14.538829], - [-93.359464, 15.61543], - [-93.875169, 15.940164], - [-94.691656, 16.200975], - [-95.250227, 16.128318], - [-96.053382, 15.752088], - [-96.557434, 15.653515], - [-97.263592, 15.917065], - [-98.01303, 16.107312], - [-98.947676, 16.566043], - [-99.697397, 16.706164], - [-100.829499, 17.171071], - [-101.666089, 17.649026], - [-101.918528, 17.91609], - [-102.478132, 17.975751], - [-103.50099, 18.292295], - [-103.917527, 18.748572], - [-104.99201, 19.316134], - [-105.493038, 19.946767], - [-105.731396, 20.434102], - [-105.397773, 20.531719], - [-105.500661, 20.816895], - [-105.270752, 21.076285], - [-105.265817, 21.422104], - [-105.603161, 21.871146], - [-105.693414, 22.26908], - [-106.028716, 22.773752], - [-106.90998, 23.767774], - [-107.915449, 24.548915], - [-108.401905, 25.172314], - [-109.260199, 25.580609], - [-109.444089, 25.824884], - [-109.291644, 26.442934], - [-109.801458, 26.676176], - [-110.391732, 27.162115], - [-110.641019, 27.859876], - [-111.178919, 27.941241], - [-111.759607, 28.467953], - [-112.228235, 28.954409], - [-112.271824, 29.266844], - [-112.809594, 30.021114], - [-113.163811, 30.786881], - [-113.148669, 31.170966], - [-113.871881, 31.567608], - [-114.205737, 31.524045], - [-114.776451, 31.799532], - [-114.9367, 31.393485], - [-114.771232, 30.913617], - [-114.673899, 30.162681], - [-114.330974, 29.750432], - [-113.588875, 29.061611], - [-113.424053, 28.826174], - [-113.271969, 28.754783], - [-113.140039, 28.411289], - [-112.962298, 28.42519], - [-112.761587, 27.780217], - [-112.457911, 27.525814], - [-112.244952, 27.171727], - [-111.616489, 26.662817], - [-111.284675, 25.73259], - [-110.987819, 25.294606], - [-110.710007, 24.826004], - [-110.655049, 24.298595], - [-110.172856, 24.265548], - [-109.771847, 23.811183], - [-109.409104, 23.364672], - [-109.433392, 23.185588], - [-109.854219, 22.818272], - [-110.031392, 22.823078], - [-110.295071, 23.430973], - [-110.949501, 24.000964], - [-111.670568, 24.484423], - [-112.182036, 24.738413], - [-112.148989, 25.470125], - [-112.300711, 26.012004], - [-112.777297, 26.32196], - [-113.464671, 26.768186], - [-113.59673, 26.63946], - [-113.848937, 26.900064], - [-114.465747, 27.14209], - [-115.055142, 27.722727], - [-114.982253, 27.7982], - [-114.570366, 27.741485], - [-114.199329, 28.115003], - [-114.162018, 28.566112], - [-114.931842, 29.279479], - [-115.518654, 29.556362], - [-115.887365, 30.180794], - [-116.25835, 30.836464], - [-116.721526, 31.635744], - [-117.12776, 32.53534], - [-115.99135, 32.61239], - [-114.72139, 32.72083], - [-114.815, 32.52528], - [-113.30498, 32.03914], - [-111.02361, 31.33472], - [-109.035, 31.34194], - [-108.24194, 31.34222], - [-108.24, 31.754854], - [-106.50759, 31.75452], - [-106.1429, 31.39995], - [-105.63159, 31.08383], - [-105.03737, 30.64402], - [-104.70575, 30.12173], - [-104.45697, 29.57196], - [-103.94, 29.27], - [-103.11, 28.97], - [-102.48, 29.76], - [-101.6624, 29.7793], - [-100.9576, 29.38071], - [-100.45584, 28.69612], - [-100.11, 28.11], - [-99.52, 27.54], - [-99.3, 26.84], - [-99.02, 26.37], - [-98.24, 26.06], - [-97.53, 25.84], - [-97.140008, 25.869997] - ] - ] - }, - "id": "MEX" - }, - { - "type": "Feature", - "properties": { "name": "Macedonia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.59023, 41.85541], - [20.71731, 41.84711], - [20.76216, 42.05186], - [21.3527, 42.2068], - [21.576636, 42.245224], - [21.91708, 42.30364], - [22.380526, 42.32026], - [22.881374, 41.999297], - [22.952377, 41.337994], - [22.76177, 41.3048], - [22.597308, 41.130487], - [22.055378, 41.149866], - [21.674161, 40.931275], - [21.02004, 40.842727], - [20.60518, 41.08622], - [20.46315, 41.51509], - [20.59023, 41.85541] - ] - ] - }, - "id": "MKD" - }, - { - "type": "Feature", - "properties": { "name": "Mali" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-12.17075, 14.616834], - [-11.834208, 14.799097], - [-11.666078, 15.388208], - [-11.349095, 15.411256], - [-10.650791, 15.132746], - [-10.086846, 15.330486], - [-9.700255, 15.264107], - [-9.550238, 15.486497], - [-5.537744, 15.50169], - [-5.315277, 16.201854], - [-5.488523, 16.325102], - [-5.971129, 20.640833], - [-6.453787, 24.956591], - [-4.923337, 24.974574], - [-1.550055, 22.792666], - [1.823228, 20.610809], - [2.060991, 20.142233], - [2.683588, 19.85623], - [3.146661, 19.693579], - [3.158133, 19.057364], - [4.267419, 19.155265], - [4.27021, 16.852227], - [3.723422, 16.184284], - [3.638259, 15.56812], - [2.749993, 15.409525], - [1.385528, 15.323561], - [1.015783, 14.968182], - [0.374892, 14.928908], - [-0.266257, 14.924309], - [-0.515854, 15.116158], - [-1.066363, 14.973815], - [-2.001035, 14.559008], - [-2.191825, 14.246418], - [-2.967694, 13.79815], - [-3.103707, 13.541267], - [-3.522803, 13.337662], - [-4.006391, 13.472485], - [-4.280405, 13.228444], - [-4.427166, 12.542646], - [-5.220942, 11.713859], - [-5.197843, 11.375146], - [-5.470565, 10.95127], - [-5.404342, 10.370737], - [-5.816926, 10.222555], - [-6.050452, 10.096361], - [-6.205223, 10.524061], - [-6.493965, 10.411303], - [-6.666461, 10.430811], - [-6.850507, 10.138994], - [-7.622759, 10.147236], - [-7.89959, 10.297382], - [-8.029944, 10.206535], - [-8.335377, 10.494812], - [-8.282357, 10.792597], - [-8.407311, 10.909257], - [-8.620321, 10.810891], - [-8.581305, 11.136246], - [-8.376305, 11.393646], - [-8.786099, 11.812561], - [-8.905265, 12.088358], - [-9.127474, 12.30806], - [-9.327616, 12.334286], - [-9.567912, 12.194243], - [-9.890993, 12.060479], - [-10.165214, 11.844084], - [-10.593224, 11.923975], - [-10.87083, 12.177887], - [-11.036556, 12.211245], - [-11.297574, 12.077971], - [-11.456169, 12.076834], - [-11.513943, 12.442988], - [-11.467899, 12.754519], - [-11.553398, 13.141214], - [-11.927716, 13.422075], - [-12.124887, 13.994727], - [-12.17075, 14.616834] - ] - ] - }, - "id": "MLI" - }, - { - "type": "Feature", - "properties": { "name": "Myanmar" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [99.543309, 20.186598], - [98.959676, 19.752981], - [98.253724, 19.708203], - [97.797783, 18.62708], - [97.375896, 18.445438], - [97.859123, 17.567946], - [98.493761, 16.837836], - [98.903348, 16.177824], - [98.537376, 15.308497], - [98.192074, 15.123703], - [98.430819, 14.622028], - [99.097755, 13.827503], - [99.212012, 13.269294], - [99.196354, 12.804748], - [99.587286, 11.892763], - [99.038121, 10.960546], - [98.553551, 9.93296], - [98.457174, 10.675266], - [98.764546, 11.441292], - [98.428339, 12.032987], - [98.509574, 13.122378], - [98.103604, 13.64046], - [97.777732, 14.837286], - [97.597072, 16.100568], - [97.16454, 16.928734], - [96.505769, 16.427241], - [95.369352, 15.71439], - [94.808405, 15.803454], - [94.188804, 16.037936], - [94.533486, 17.27724], - [94.324817, 18.213514], - [93.540988, 19.366493], - [93.663255, 19.726962], - [93.078278, 19.855145], - [92.368554, 20.670883], - [92.303234, 21.475485], - [92.652257, 21.324048], - [92.672721, 22.041239], - [93.166128, 22.27846], - [93.060294, 22.703111], - [93.286327, 23.043658], - [93.325188, 24.078556], - [94.106742, 23.850741], - [94.552658, 24.675238], - [94.603249, 25.162495], - [95.155153, 26.001307], - [95.124768, 26.573572], - [96.419366, 27.264589], - [97.133999, 27.083774], - [97.051989, 27.699059], - [97.402561, 27.882536], - [97.327114, 28.261583], - [97.911988, 28.335945], - [98.246231, 27.747221], - [98.68269, 27.508812], - [98.712094, 26.743536], - [98.671838, 25.918703], - [97.724609, 25.083637], - [97.60472, 23.897405], - [98.660262, 24.063286], - [98.898749, 23.142722], - [99.531992, 22.949039], - [99.240899, 22.118314], - [99.983489, 21.742937], - [100.416538, 21.558839], - [101.150033, 21.849984], - [101.180005, 21.436573], - [100.329101, 20.786122], - [100.115988, 20.41785], - [99.543309, 20.186598] - ] - ] - }, - "id": "MMR" - }, - { - "type": "Feature", - "properties": { "name": "Montenegro" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [19.801613, 42.500093], - [19.738051, 42.688247], - [19.30449, 42.19574], - [19.37177, 41.87755], - [19.16246, 41.95502], - [18.88214, 42.28151], - [18.45, 42.48], - [18.56, 42.65], - [18.70648, 43.20011], - [19.03165, 43.43253], - [19.21852, 43.52384], - [19.48389, 43.35229], - [19.63, 43.21378], - [19.95857, 43.10604], - [20.3398, 42.89852], - [20.25758, 42.81275], - [20.0707, 42.58863], - [19.801613, 42.500093] - ] - ] - }, - "id": "MNE" - }, - { - "type": "Feature", - "properties": { "name": "Mongolia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [87.751264, 49.297198], - [88.805567, 49.470521], - [90.713667, 50.331812], - [92.234712, 50.802171], - [93.104219, 50.49529], - [94.147566, 50.480537], - [94.815949, 50.013433], - [95.814028, 49.977467], - [97.259728, 49.726061], - [98.231762, 50.422401], - [97.82574, 51.010995], - [98.861491, 52.047366], - [99.981732, 51.634006], - [100.88948, 51.516856], - [102.065223, 51.259921], - [102.255909, 50.510561], - [103.676545, 50.089966], - [104.621552, 50.275329], - [105.886591, 50.406019], - [106.888804, 50.274296], - [107.868176, 49.793705], - [108.475167, 49.282548], - [109.402449, 49.292961], - [110.662011, 49.130128], - [111.581231, 49.377968], - [112.89774, 49.543565], - [114.362456, 50.248303], - [114.96211, 50.140247], - [115.485695, 49.805177], - [116.678801, 49.888531], - [116.191802, 49.134598], - [115.485282, 48.135383], - [115.742837, 47.726545], - [116.308953, 47.85341], - [117.295507, 47.697709], - [118.064143, 48.06673], - [118.866574, 47.74706], - [119.772824, 47.048059], - [119.66327, 46.69268], - [118.874326, 46.805412], - [117.421701, 46.672733], - [116.717868, 46.388202], - [115.985096, 45.727235], - [114.460332, 45.339817], - [113.463907, 44.808893], - [112.436062, 45.011646], - [111.873306, 45.102079], - [111.348377, 44.457442], - [111.667737, 44.073176], - [111.829588, 43.743118], - [111.129682, 43.406834], - [110.412103, 42.871234], - [109.243596, 42.519446], - [107.744773, 42.481516], - [106.129316, 42.134328], - [104.964994, 41.59741], - [104.522282, 41.908347], - [103.312278, 41.907468], - [101.83304, 42.514873], - [100.845866, 42.663804], - [99.515817, 42.524691], - [97.451757, 42.74889], - [96.349396, 42.725635], - [95.762455, 43.319449], - [95.306875, 44.241331], - [94.688929, 44.352332], - [93.480734, 44.975472], - [92.133891, 45.115076], - [90.94554, 45.286073], - [90.585768, 45.719716], - [90.970809, 46.888146], - [90.280826, 47.693549], - [88.854298, 48.069082], - [88.013832, 48.599463], - [87.751264, 49.297198] - ] - ] - }, - "id": "MNG" - }, - { - "type": "Feature", - "properties": { "name": "Mozambique" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.559989, -11.52002], - [35.312398, -11.439146], - [36.514082, -11.720938], - [36.775151, -11.594537], - [37.471284, -11.568751], - [37.827645, -11.268769], - [38.427557, -11.285202], - [39.52103, -10.896854], - [40.316589, -10.317096], - [40.478387, -10.765441], - [40.437253, -11.761711], - [40.560811, -12.639177], - [40.59962, -14.201975], - [40.775475, -14.691764], - [40.477251, -15.406294], - [40.089264, -16.100774], - [39.452559, -16.720891], - [38.538351, -17.101023], - [37.411133, -17.586368], - [36.281279, -18.659688], - [35.896497, -18.84226], - [35.1984, -19.552811], - [34.786383, -19.784012], - [34.701893, -20.497043], - [35.176127, -21.254361], - [35.373428, -21.840837], - [35.385848, -22.14], - [35.562546, -22.09], - [35.533935, -23.070788], - [35.371774, -23.535359], - [35.60747, -23.706563], - [35.458746, -24.12261], - [35.040735, -24.478351], - [34.215824, -24.816314], - [33.01321, -25.357573], - [32.574632, -25.727318], - [32.660363, -26.148584], - [32.915955, -26.215867], - [32.83012, -26.742192], - [32.071665, -26.73382], - [31.985779, -26.29178], - [31.837778, -25.843332], - [31.752408, -25.484284], - [31.930589, -24.369417], - [31.670398, -23.658969], - [31.191409, -22.25151], - [32.244988, -21.116489], - [32.508693, -20.395292], - [32.659743, -20.30429], - [32.772708, -19.715592], - [32.611994, -19.419383], - [32.654886, -18.67209], - [32.849861, -17.979057], - [32.847639, -16.713398], - [32.328239, -16.392074], - [31.852041, -16.319417], - [31.636498, -16.07199], - [31.173064, -15.860944], - [30.338955, -15.880839], - [30.274256, -15.507787], - [30.179481, -14.796099], - [33.214025, -13.97186], - [33.7897, -14.451831], - [34.064825, -14.35995], - [34.459633, -14.61301], - [34.517666, -15.013709], - [34.307291, -15.478641], - [34.381292, -16.18356], - [35.03381, -16.8013], - [35.339063, -16.10744], - [35.771905, -15.896859], - [35.686845, -14.611046], - [35.267956, -13.887834], - [34.907151, -13.565425], - [34.559989, -13.579998], - [34.280006, -12.280025], - [34.559989, -11.52002] - ] - ] - }, - "id": "MOZ" - }, - { - "type": "Feature", - "properties": { "name": "Mauritania" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-12.17075, 14.616834], - [-12.830658, 15.303692], - [-13.435738, 16.039383], - [-14.099521, 16.304302], - [-14.577348, 16.598264], - [-15.135737, 16.587282], - [-15.623666, 16.369337], - [-16.12069, 16.455663], - [-16.463098, 16.135036], - [-16.549708, 16.673892], - [-16.270552, 17.166963], - [-16.146347, 18.108482], - [-16.256883, 19.096716], - [-16.377651, 19.593817], - [-16.277838, 20.092521], - [-16.536324, 20.567866], - [-17.063423, 20.999752], - [-16.845194, 21.333323], - [-12.929102, 21.327071], - [-13.118754, 22.77122], - [-12.874222, 23.284832], - [-11.937224, 23.374594], - [-11.969419, 25.933353], - [-8.687294, 25.881056], - [-8.6844, 27.395744], - [-4.923337, 24.974574], - [-6.453787, 24.956591], - [-5.971129, 20.640833], - [-5.488523, 16.325102], - [-5.315277, 16.201854], - [-5.537744, 15.50169], - [-9.550238, 15.486497], - [-9.700255, 15.264107], - [-10.086846, 15.330486], - [-10.650791, 15.132746], - [-11.349095, 15.411256], - [-11.666078, 15.388208], - [-11.834208, 14.799097], - [-12.17075, 14.616834] - ] - ] - }, - "id": "MRT" - }, - { - "type": "Feature", - "properties": { "name": "Malawi" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [34.559989, -11.52002], - [34.280006, -12.280025], - [34.559989, -13.579998], - [34.907151, -13.565425], - [35.267956, -13.887834], - [35.686845, -14.611046], - [35.771905, -15.896859], - [35.339063, -16.10744], - [35.03381, -16.8013], - [34.381292, -16.18356], - [34.307291, -15.478641], - [34.517666, -15.013709], - [34.459633, -14.61301], - [34.064825, -14.35995], - [33.7897, -14.451831], - [33.214025, -13.97186], - [32.688165, -13.712858], - [32.991764, -12.783871], - [33.306422, -12.435778], - [33.114289, -11.607198], - [33.31531, -10.79655], - [33.485688, -10.525559], - [33.231388, -9.676722], - [32.759375, -9.230599], - [33.739729, -9.417151], - [33.940838, -9.693674], - [34.280006, -10.16], - [34.559989, -11.52002] - ] - ] - }, - "id": "MWI" - }, - { - "type": "Feature", - "properties": { "name": "Malaysia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [101.075516, 6.204867], - [101.154219, 5.691384], - [101.814282, 5.810808], - [102.141187, 6.221636], - [102.371147, 6.128205], - [102.961705, 5.524495], - [103.381215, 4.855001], - [103.438575, 4.181606], - [103.332122, 3.726698], - [103.429429, 3.382869], - [103.502448, 2.791019], - [103.854674, 2.515454], - [104.247932, 1.631141], - [104.228811, 1.293048], - [103.519707, 1.226334], - [102.573615, 1.967115], - [101.390638, 2.760814], - [101.27354, 3.270292], - [100.695435, 3.93914], - [100.557408, 4.76728], - [100.196706, 5.312493], - [100.30626, 6.040562], - [100.085757, 6.464489], - [100.259596, 6.642825], - [101.075516, 6.204867] - ] - ], - [ - [ - [118.618321, 4.478202], - [117.882035, 4.137551], - [117.015214, 4.306094], - [115.865517, 4.306559], - [115.519078, 3.169238], - [115.134037, 2.821482], - [114.621355, 1.430688], - [113.80585, 1.217549], - [112.859809, 1.49779], - [112.380252, 1.410121], - [111.797548, 0.904441], - [111.159138, 0.976478], - [110.514061, 0.773131], - [109.830227, 1.338136], - [109.66326, 2.006467], - [110.396135, 1.663775], - [111.168853, 1.850637], - [111.370081, 2.697303], - [111.796928, 2.885897], - [112.995615, 3.102395], - [113.712935, 3.893509], - [114.204017, 4.525874], - [114.659596, 4.007637], - [114.869557, 4.348314], - [115.347461, 4.316636], - [115.4057, 4.955228], - [115.45071, 5.44773], - [116.220741, 6.143191], - [116.725103, 6.924771], - [117.129626, 6.928053], - [117.643393, 6.422166], - [117.689075, 5.98749], - [118.347691, 5.708696], - [119.181904, 5.407836], - [119.110694, 5.016128], - [118.439727, 4.966519], - [118.618321, 4.478202] - ] - ] - ] - }, - "id": "MYS" - }, - { - "type": "Feature", - "properties": { "name": "Namibia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [16.344977, -28.576705], - [15.601818, -27.821247], - [15.210472, -27.090956], - [14.989711, -26.117372], - [14.743214, -25.39292], - [14.408144, -23.853014], - [14.385717, -22.656653], - [14.257714, -22.111208], - [13.868642, -21.699037], - [13.352498, -20.872834], - [12.826845, -19.673166], - [12.608564, -19.045349], - [11.794919, -18.069129], - [11.734199, -17.301889], - [12.215461, -17.111668], - [12.814081, -16.941343], - [13.462362, -16.971212], - [14.058501, -17.423381], - [14.209707, -17.353101], - [18.263309, -17.309951], - [18.956187, -17.789095], - [21.377176, -17.930636], - [23.215048, -17.523116], - [24.033862, -17.295843], - [24.682349, -17.353411], - [25.07695, -17.578823], - [25.084443, -17.661816], - [24.520705, -17.887125], - [24.217365, -17.889347], - [23.579006, -18.281261], - [23.196858, -17.869038], - [21.65504, -18.219146], - [20.910641, -18.252219], - [20.881134, -21.814327], - [19.895458, -21.849157], - [19.895768, -24.76779], - [19.894734, -28.461105], - [19.002127, -28.972443], - [18.464899, -29.045462], - [17.836152, -28.856378], - [17.387497, -28.783514], - [17.218929, -28.355943], - [16.824017, -28.082162], - [16.344977, -28.576705] - ] - ] - }, - "id": "NAM" - }, - { - "type": "Feature", - "properties": { "name": "New Caledonia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [165.77999, -21.080005], - [166.599991, -21.700019], - [167.120011, -22.159991], - [166.740035, -22.399976], - [166.189732, -22.129708], - [165.474375, -21.679607], - [164.829815, -21.14982], - [164.167995, -20.444747], - [164.029606, -20.105646], - [164.459967, -20.120012], - [165.020036, -20.459991], - [165.460009, -20.800022], - [165.77999, -21.080005] - ] - ] - }, - "id": "NCL" - }, - { - "type": "Feature", - "properties": { "name": "Niger" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [2.154474, 11.94015], - [2.177108, 12.625018], - [1.024103, 12.851826], - [0.993046, 13.33575], - [0.429928, 13.988733], - [0.295646, 14.444235], - [0.374892, 14.928908], - [1.015783, 14.968182], - [1.385528, 15.323561], - [2.749993, 15.409525], - [3.638259, 15.56812], - [3.723422, 16.184284], - [4.27021, 16.852227], - [4.267419, 19.155265], - [5.677566, 19.601207], - [8.572893, 21.565661], - [11.999506, 23.471668], - [13.581425, 23.040506], - [14.143871, 22.491289], - [14.8513, 22.86295], - [15.096888, 21.308519], - [15.471077, 21.048457], - [15.487148, 20.730415], - [15.903247, 20.387619], - [15.685741, 19.95718], - [15.300441, 17.92795], - [15.247731, 16.627306], - [13.972202, 15.684366], - [13.540394, 14.367134], - [13.956699, 13.996691], - [13.954477, 13.353449], - [14.595781, 13.330427], - [14.495787, 12.859396], - [14.213531, 12.802035], - [14.181336, 12.483657], - [13.995353, 12.461565], - [13.318702, 13.556356], - [13.083987, 13.596147], - [12.302071, 13.037189], - [11.527803, 13.32898], - [10.989593, 13.387323], - [10.701032, 13.246918], - [10.114814, 13.277252], - [9.524928, 12.851102], - [9.014933, 12.826659], - [7.804671, 13.343527], - [7.330747, 13.098038], - [6.820442, 13.115091], - [6.445426, 13.492768], - [5.443058, 13.865924], - [4.368344, 13.747482], - [4.107946, 13.531216], - [3.967283, 12.956109], - [3.680634, 12.552903], - [3.61118, 11.660167], - [2.848643, 12.235636], - [2.490164, 12.233052], - [2.154474, 11.94015] - ] - ] - }, - "id": "NER" - }, - { - "type": "Feature", - "properties": { "name": "Nigeria" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [8.500288, 4.771983], - [7.462108, 4.412108], - [7.082596, 4.464689], - [6.698072, 4.240594], - [5.898173, 4.262453], - [5.362805, 4.887971], - [5.033574, 5.611802], - [4.325607, 6.270651], - [3.57418, 6.2583], - [2.691702, 6.258817], - [2.749063, 7.870734], - [2.723793, 8.506845], - [2.912308, 9.137608], - [3.220352, 9.444153], - [3.705438, 10.06321], - [3.60007, 10.332186], - [3.797112, 10.734746], - [3.572216, 11.327939], - [3.61118, 11.660167], - [3.680634, 12.552903], - [3.967283, 12.956109], - [4.107946, 13.531216], - [4.368344, 13.747482], - [5.443058, 13.865924], - [6.445426, 13.492768], - [6.820442, 13.115091], - [7.330747, 13.098038], - [7.804671, 13.343527], - [9.014933, 12.826659], - [9.524928, 12.851102], - [10.114814, 13.277252], - [10.701032, 13.246918], - [10.989593, 13.387323], - [11.527803, 13.32898], - [12.302071, 13.037189], - [13.083987, 13.596147], - [13.318702, 13.556356], - [13.995353, 12.461565], - [14.181336, 12.483657], - [14.577178, 12.085361], - [14.468192, 11.904752], - [14.415379, 11.572369], - [13.57295, 10.798566], - [13.308676, 10.160362], - [13.1676, 9.640626], - [12.955468, 9.417772], - [12.753672, 8.717763], - [12.218872, 8.305824], - [12.063946, 7.799808], - [11.839309, 7.397042], - [11.745774, 6.981383], - [11.058788, 6.644427], - [10.497375, 7.055358], - [10.118277, 7.03877], - [9.522706, 6.453482], - [9.233163, 6.444491], - [8.757533, 5.479666], - [8.500288, 4.771983] - ] - ] - }, - "id": "NGA" - }, - { - "type": "Feature", - "properties": { "name": "Nicaragua" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-85.71254, 11.088445], - [-86.058488, 11.403439], - [-86.52585, 11.806877], - [-86.745992, 12.143962], - [-87.167516, 12.458258], - [-87.668493, 12.90991], - [-87.557467, 13.064552], - [-87.392386, 12.914018], - [-87.316654, 12.984686], - [-87.005769, 13.025794], - [-86.880557, 13.254204], - [-86.733822, 13.263093], - [-86.755087, 13.754845], - [-86.520708, 13.778487], - [-86.312142, 13.771356], - [-86.096264, 14.038187], - [-85.801295, 13.836055], - [-85.698665, 13.960078], - [-85.514413, 14.079012], - [-85.165365, 14.35437], - [-85.148751, 14.560197], - [-85.052787, 14.551541], - [-84.924501, 14.790493], - [-84.820037, 14.819587], - [-84.649582, 14.666805], - [-84.449336, 14.621614], - [-84.228342, 14.748764], - [-83.975721, 14.749436], - [-83.628585, 14.880074], - [-83.489989, 15.016267], - [-83.147219, 14.995829], - [-83.233234, 14.899866], - [-83.284162, 14.676624], - [-83.182126, 14.310703], - [-83.4125, 13.970078], - [-83.519832, 13.567699], - [-83.552207, 13.127054], - [-83.498515, 12.869292], - [-83.473323, 12.419087], - [-83.626104, 12.32085], - [-83.719613, 11.893124], - [-83.650858, 11.629032], - [-83.85547, 11.373311], - [-83.808936, 11.103044], - [-83.655612, 10.938764], - [-83.895054, 10.726839], - [-84.190179, 10.79345], - [-84.355931, 10.999226], - [-84.673069, 11.082657], - [-84.903003, 10.952303], - [-85.561852, 11.217119], - [-85.71254, 11.088445] - ] - ] - }, - "id": "NIC" - }, - { - "type": "Feature", - "properties": { "name": "Netherlands" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [6.074183, 53.510403], - [6.90514, 53.482162], - [7.092053, 53.144043], - [6.84287, 52.22844], - [6.589397, 51.852029], - [5.988658, 51.851616], - [6.156658, 50.803721], - [5.606976, 51.037298], - [4.973991, 51.475024], - [4.047071, 51.267259], - [3.314971, 51.345755], - [3.830289, 51.620545], - [4.705997, 53.091798], - [6.074183, 53.510403] - ] - ] - }, - "id": "NLD" - }, - { - "type": "Feature", - "properties": { "name": "Norway" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [28.165547, 71.185474], - [31.293418, 70.453788], - [30.005435, 70.186259], - [31.101079, 69.55808], - [29.399581, 69.156916], - [28.59193, 69.064777], - [29.015573, 69.766491], - [27.732292, 70.164193], - [26.179622, 69.825299], - [25.689213, 69.092114], - [24.735679, 68.649557], - [23.66205, 68.891247], - [22.356238, 68.841741], - [21.244936, 69.370443], - [20.645593, 69.106247], - [20.025269, 69.065139], - [19.87856, 68.407194], - [17.993868, 68.567391], - [17.729182, 68.010552], - [16.768879, 68.013937], - [16.108712, 67.302456], - [15.108411, 66.193867], - [13.55569, 64.787028], - [13.919905, 64.445421], - [13.571916, 64.049114], - [12.579935, 64.066219], - [11.930569, 63.128318], - [11.992064, 61.800362], - [12.631147, 61.293572], - [12.300366, 60.117933], - [11.468272, 59.432393], - [11.027369, 58.856149], - [10.356557, 59.469807], - [8.382, 58.313288], - [7.048748, 58.078884], - [5.665835, 58.588155], - [5.308234, 59.663232], - [4.992078, 61.970998], - [5.9129, 62.614473], - [8.553411, 63.454008], - [10.527709, 64.486038], - [12.358347, 65.879726], - [14.761146, 67.810642], - [16.435927, 68.563205], - [19.184028, 69.817444], - [21.378416, 70.255169], - [23.023742, 70.202072], - [24.546543, 71.030497], - [26.37005, 70.986262], - [28.165547, 71.185474] - ] - ], - [ - [ - [24.72412, 77.85385], - [22.49032, 77.44493], - [20.72601, 77.67704], - [21.41611, 77.93504], - [20.8119, 78.25463], - [22.88426, 78.45494], - [23.28134, 78.07954], - [24.72412, 77.85385] - ] - ], - [ - [ - [18.25183, 79.70175], - [21.54383, 78.95611], - [19.02737, 78.5626], - [18.47172, 77.82669], - [17.59441, 77.63796], - [17.1182, 76.80941], - [15.91315, 76.77045], - [13.76259, 77.38035], - [14.66956, 77.73565], - [13.1706, 78.02493], - [11.22231, 78.8693], - [10.44453, 79.65239], - [13.17077, 80.01046], - [13.71852, 79.66039], - [15.14282, 79.67431], - [15.52255, 80.01608], - [16.99085, 80.05086], - [18.25183, 79.70175] - ] - ], - [ - [ - [25.447625, 80.40734], - [27.407506, 80.056406], - [25.924651, 79.517834], - [23.024466, 79.400012], - [20.075188, 79.566823], - [19.897266, 79.842362], - [18.462264, 79.85988], - [17.368015, 80.318896], - [20.455992, 80.598156], - [21.907945, 80.357679], - [22.919253, 80.657144], - [25.447625, 80.40734] - ] - ] - ] - }, - "id": "NOR" - }, - { - "type": "Feature", - "properties": { "name": "Nepal" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [88.120441, 27.876542], - [88.043133, 27.445819], - [88.174804, 26.810405], - [88.060238, 26.414615], - [87.227472, 26.397898], - [86.024393, 26.630985], - [85.251779, 26.726198], - [84.675018, 27.234901], - [83.304249, 27.364506], - [81.999987, 27.925479], - [81.057203, 28.416095], - [80.088425, 28.79447], - [80.476721, 29.729865], - [81.111256, 30.183481], - [81.525804, 30.422717], - [82.327513, 30.115268], - [83.337115, 29.463732], - [83.898993, 29.320226], - [84.23458, 28.839894], - [85.011638, 28.642774], - [85.82332, 28.203576], - [86.954517, 27.974262], - [88.120441, 27.876542] - ] - ] - }, - "id": "NPL" - }, - { - "type": "Feature", - "properties": { "name": "New Zealand" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [173.020375, -40.919052], - [173.247234, -41.331999], - [173.958405, -40.926701], - [174.247587, -41.349155], - [174.248517, -41.770008], - [173.876447, -42.233184], - [173.22274, -42.970038], - [172.711246, -43.372288], - [173.080113, -43.853344], - [172.308584, -43.865694], - [171.452925, -44.242519], - [171.185138, -44.897104], - [170.616697, -45.908929], - [169.831422, -46.355775], - [169.332331, -46.641235], - [168.411354, -46.619945], - [167.763745, -46.290197], - [166.676886, -46.219917], - [166.509144, -45.852705], - [167.046424, -45.110941], - [168.303763, -44.123973], - [168.949409, -43.935819], - [169.667815, -43.555326], - [170.52492, -43.031688], - [171.12509, -42.512754], - [171.569714, -41.767424], - [171.948709, -41.514417], - [172.097227, -40.956104], - [172.79858, -40.493962], - [173.020375, -40.919052] - ] - ], - [ - [ - [174.612009, -36.156397], - [175.336616, -37.209098], - [175.357596, -36.526194], - [175.808887, -36.798942], - [175.95849, -37.555382], - [176.763195, -37.881253], - [177.438813, -37.961248], - [178.010354, -37.579825], - [178.517094, -37.695373], - [178.274731, -38.582813], - [177.97046, -39.166343], - [177.206993, -39.145776], - [176.939981, -39.449736], - [177.032946, -39.879943], - [176.885824, -40.065978], - [176.508017, -40.604808], - [176.01244, -41.289624], - [175.239567, -41.688308], - [175.067898, -41.425895], - [174.650973, -41.281821], - [175.22763, -40.459236], - [174.900157, -39.908933], - [173.824047, -39.508854], - [173.852262, -39.146602], - [174.574802, -38.797683], - [174.743474, -38.027808], - [174.697017, -37.381129], - [174.292028, -36.711092], - [174.319004, -36.534824], - [173.840997, -36.121981], - [173.054171, -35.237125], - [172.636005, -34.529107], - [173.007042, -34.450662], - [173.551298, -35.006183], - [174.32939, -35.265496], - [174.612009, -36.156397] - ] - ] - ] - }, - "id": "NZL" - }, - { - "type": "Feature", - "properties": { "name": "Oman" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [58.861141, 21.114035], - [58.487986, 20.428986], - [58.034318, 20.481437], - [57.826373, 20.243002], - [57.665762, 19.736005], - [57.7887, 19.06757], - [57.694391, 18.94471], - [57.234264, 18.947991], - [56.609651, 18.574267], - [56.512189, 18.087113], - [56.283521, 17.876067], - [55.661492, 17.884128], - [55.269939, 17.632309], - [55.2749, 17.228354], - [54.791002, 16.950697], - [54.239253, 17.044981], - [53.570508, 16.707663], - [53.108573, 16.651051], - [52.782184, 17.349742], - [52.00001, 19.000003], - [54.999982, 19.999994], - [55.666659, 22.000001], - [55.208341, 22.70833], - [55.234489, 23.110993], - [55.525841, 23.524869], - [55.528632, 23.933604], - [55.981214, 24.130543], - [55.804119, 24.269604], - [55.886233, 24.920831], - [56.396847, 24.924732], - [56.84514, 24.241673], - [57.403453, 23.878594], - [58.136948, 23.747931], - [58.729211, 23.565668], - [59.180502, 22.992395], - [59.450098, 22.660271], - [59.80806, 22.533612], - [59.806148, 22.310525], - [59.442191, 21.714541], - [59.282408, 21.433886], - [58.861141, 21.114035] - ] - ], - [ - [ - [56.391421, 25.895991], - [56.261042, 25.714606], - [56.070821, 26.055464], - [56.362017, 26.395934], - [56.485679, 26.309118], - [56.391421, 25.895991] - ] - ] - ] - }, - "id": "OMN" - }, - { - "type": "Feature", - "properties": { "name": "Pakistan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [75.158028, 37.133031], - [75.896897, 36.666806], - [76.192848, 35.898403], - [77.837451, 35.49401], - [76.871722, 34.653544], - [75.757061, 34.504923], - [74.240203, 34.748887], - [73.749948, 34.317699], - [74.104294, 33.441473], - [74.451559, 32.7649], - [75.258642, 32.271105], - [74.405929, 31.692639], - [74.42138, 30.979815], - [73.450638, 29.976413], - [72.823752, 28.961592], - [71.777666, 27.91318], - [70.616496, 27.989196], - [69.514393, 26.940966], - [70.168927, 26.491872], - [70.282873, 25.722229], - [70.844699, 25.215102], - [71.04324, 24.356524], - [68.842599, 24.359134], - [68.176645, 23.691965], - [67.443667, 23.944844], - [67.145442, 24.663611], - [66.372828, 25.425141], - [64.530408, 25.237039], - [62.905701, 25.218409], - [61.497363, 25.078237], - [61.874187, 26.239975], - [63.316632, 26.756532], - [63.233898, 27.217047], - [62.755426, 27.378923], - [62.72783, 28.259645], - [61.771868, 28.699334], - [61.369309, 29.303276], - [60.874248, 29.829239], - [62.549857, 29.318572], - [63.550261, 29.468331], - [64.148002, 29.340819], - [64.350419, 29.560031], - [65.046862, 29.472181], - [66.346473, 29.887943], - [66.381458, 30.738899], - [66.938891, 31.304911], - [67.683394, 31.303154], - [67.792689, 31.58293], - [68.556932, 31.71331], - [68.926677, 31.620189], - [69.317764, 31.901412], - [69.262522, 32.501944], - [69.687147, 33.105499], - [70.323594, 33.358533], - [69.930543, 34.02012], - [70.881803, 33.988856], - [71.156773, 34.348911], - [71.115019, 34.733126], - [71.613076, 35.153203], - [71.498768, 35.650563], - [71.262348, 36.074388], - [71.846292, 36.509942], - [72.920025, 36.720007], - [74.067552, 36.836176], - [74.575893, 37.020841], - [75.158028, 37.133031] - ] - ] - }, - "id": "PAK" - }, - { - "type": "Feature", - "properties": { "name": "Panama" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-77.881571, 7.223771], - [-78.214936, 7.512255], - [-78.429161, 8.052041], - [-78.182096, 8.319182], - [-78.435465, 8.387705], - [-78.622121, 8.718124], - [-79.120307, 8.996092], - [-79.557877, 8.932375], - [-79.760578, 8.584515], - [-80.164481, 8.333316], - [-80.382659, 8.298409], - [-80.480689, 8.090308], - [-80.00369, 7.547524], - [-80.276671, 7.419754], - [-80.421158, 7.271572], - [-80.886401, 7.220541], - [-81.059543, 7.817921], - [-81.189716, 7.647906], - [-81.519515, 7.70661], - [-81.721311, 8.108963], - [-82.131441, 8.175393], - [-82.390934, 8.292362], - [-82.820081, 8.290864], - [-82.850958, 8.073823], - [-82.965783, 8.225028], - [-82.913176, 8.423517], - [-82.829771, 8.626295], - [-82.868657, 8.807266], - [-82.719183, 8.925709], - [-82.927155, 9.07433], - [-82.932891, 9.476812], - [-82.546196, 9.566135], - [-82.187123, 9.207449], - [-82.207586, 8.995575], - [-81.808567, 8.950617], - [-81.714154, 9.031955], - [-81.439287, 8.786234], - [-80.947302, 8.858504], - [-80.521901, 9.111072], - [-79.9146, 9.312765], - [-79.573303, 9.61161], - [-79.021192, 9.552931], - [-79.05845, 9.454565], - [-78.500888, 9.420459], - [-78.055928, 9.24773], - [-77.729514, 8.946844], - [-77.353361, 8.670505], - [-77.474723, 8.524286], - [-77.242566, 7.935278], - [-77.431108, 7.638061], - [-77.753414, 7.70984], - [-77.881571, 7.223771] - ] - ] - }, - "id": "PAN" - }, - { - "type": "Feature", - "properties": { "name": "Peru" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-69.590424, -17.580012], - [-69.858444, -18.092694], - [-70.372572, -18.347975], - [-71.37525, -17.773799], - [-71.462041, -17.363488], - [-73.44453, -16.359363], - [-75.237883, -15.265683], - [-76.009205, -14.649286], - [-76.423469, -13.823187], - [-76.259242, -13.535039], - [-77.106192, -12.222716], - [-78.092153, -10.377712], - [-79.036953, -8.386568], - [-79.44592, -7.930833], - [-79.760578, -7.194341], - [-80.537482, -6.541668], - [-81.249996, -6.136834], - [-80.926347, -5.690557], - [-81.410943, -4.736765], - [-81.09967, -4.036394], - [-80.302561, -3.404856], - [-80.184015, -3.821162], - [-80.469295, -4.059287], - [-80.442242, -4.425724], - [-80.028908, -4.346091], - [-79.624979, -4.454198], - [-79.205289, -4.959129], - [-78.639897, -4.547784], - [-78.450684, -3.873097], - [-77.837905, -3.003021], - [-76.635394, -2.608678], - [-75.544996, -1.56161], - [-75.233723, -0.911417], - [-75.373223, -0.152032], - [-75.106625, -0.057205], - [-74.441601, -0.53082], - [-74.122395, -1.002833], - [-73.659504, -1.260491], - [-73.070392, -2.308954], - [-72.325787, -2.434218], - [-71.774761, -2.16979], - [-71.413646, -2.342802], - [-70.813476, -2.256865], - [-70.047709, -2.725156], - [-70.692682, -3.742872], - [-70.394044, -3.766591], - [-69.893635, -4.298187], - [-70.794769, -4.251265], - [-70.928843, -4.401591], - [-71.748406, -4.593983], - [-72.891928, -5.274561], - [-72.964507, -5.741251], - [-73.219711, -6.089189], - [-73.120027, -6.629931], - [-73.724487, -6.918595], - [-73.723401, -7.340999], - [-73.987235, -7.52383], - [-73.571059, -8.424447], - [-73.015383, -9.032833], - [-73.226713, -9.462213], - [-72.563033, -9.520194], - [-72.184891, -10.053598], - [-71.302412, -10.079436], - [-70.481894, -9.490118], - [-70.548686, -11.009147], - [-70.093752, -11.123972], - [-69.529678, -10.951734], - [-68.66508, -12.5613], - [-68.88008, -12.899729], - [-68.929224, -13.602684], - [-68.948887, -14.453639], - [-69.339535, -14.953195], - [-69.160347, -15.323974], - [-69.389764, -15.660129], - [-68.959635, -16.500698], - [-69.590424, -17.580012] - ] - ] - }, - "id": "PER" - }, - { - "type": "Feature", - "properties": { "name": "Philippines" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [126.376814, 8.414706], - [126.478513, 7.750354], - [126.537424, 7.189381], - [126.196773, 6.274294], - [125.831421, 7.293715], - [125.363852, 6.786485], - [125.683161, 6.049657], - [125.396512, 5.581003], - [124.219788, 6.161355], - [123.93872, 6.885136], - [124.243662, 7.36061], - [123.610212, 7.833527], - [123.296071, 7.418876], - [122.825506, 7.457375], - [122.085499, 6.899424], - [121.919928, 7.192119], - [122.312359, 8.034962], - [122.942398, 8.316237], - [123.487688, 8.69301], - [123.841154, 8.240324], - [124.60147, 8.514158], - [124.764612, 8.960409], - [125.471391, 8.986997], - [125.412118, 9.760335], - [126.222714, 9.286074], - [126.306637, 8.782487], - [126.376814, 8.414706] - ] - ], - [ - [ - [123.982438, 10.278779], - [123.623183, 9.950091], - [123.309921, 9.318269], - [122.995883, 9.022189], - [122.380055, 9.713361], - [122.586089, 9.981045], - [122.837081, 10.261157], - [122.947411, 10.881868], - [123.49885, 10.940624], - [123.337774, 10.267384], - [124.077936, 11.232726], - [123.982438, 10.278779] - ] - ], - [ - [ - [118.504581, 9.316383], - [117.174275, 8.3675], - [117.664477, 9.066889], - [118.386914, 9.6845], - [118.987342, 10.376292], - [119.511496, 11.369668], - [119.689677, 10.554291], - [119.029458, 10.003653], - [118.504581, 9.316383] - ] - ], - [ - [ - [121.883548, 11.891755], - [122.483821, 11.582187], - [123.120217, 11.58366], - [123.100838, 11.165934], - [122.637714, 10.741308], - [122.00261, 10.441017], - [121.967367, 10.905691], - [122.03837, 11.415841], - [121.883548, 11.891755] - ] - ], - [ - [ - [125.502552, 12.162695], - [125.783465, 11.046122], - [125.011884, 11.311455], - [125.032761, 10.975816], - [125.277449, 10.358722], - [124.801819, 10.134679], - [124.760168, 10.837995], - [124.459101, 10.88993], - [124.302522, 11.495371], - [124.891013, 11.415583], - [124.87799, 11.79419], - [124.266762, 12.557761], - [125.227116, 12.535721], - [125.502552, 12.162695] - ] - ], - [ - [ - [121.527394, 13.06959], - [121.26219, 12.20556], - [120.833896, 12.704496], - [120.323436, 13.466413], - [121.180128, 13.429697], - [121.527394, 13.06959] - ] - ], - [ - [ - [121.321308, 18.504065], - [121.937601, 18.218552], - [122.246006, 18.47895], - [122.336957, 18.224883], - [122.174279, 17.810283], - [122.515654, 17.093505], - [122.252311, 16.262444], - [121.662786, 15.931018], - [121.50507, 15.124814], - [121.728829, 14.328376], - [122.258925, 14.218202], - [122.701276, 14.336541], - [123.950295, 13.782131], - [123.855107, 13.237771], - [124.181289, 12.997527], - [124.077419, 12.536677], - [123.298035, 13.027526], - [122.928652, 13.55292], - [122.671355, 13.185836], - [122.03465, 13.784482], - [121.126385, 13.636687], - [120.628637, 13.857656], - [120.679384, 14.271016], - [120.991819, 14.525393], - [120.693336, 14.756671], - [120.564145, 14.396279], - [120.070429, 14.970869], - [119.920929, 15.406347], - [119.883773, 16.363704], - [120.286488, 16.034629], - [120.390047, 17.599081], - [120.715867, 18.505227], - [121.321308, 18.504065] - ] - ] - ] - }, - "id": "PHL" - }, - { - "type": "Feature", - "properties": { "name": "Papua New Guinea" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [155.880026, -6.819997], - [155.599991, -6.919991], - [155.166994, -6.535931], - [154.729192, -5.900828], - [154.514114, -5.139118], - [154.652504, -5.042431], - [154.759991, -5.339984], - [155.062918, -5.566792], - [155.547746, -6.200655], - [156.019965, -6.540014], - [155.880026, -6.819997] - ] - ], - [ - [ - [151.982796, -5.478063], - [151.459107, -5.56028], - [151.30139, -5.840728], - [150.754447, -6.083763], - [150.241197, -6.317754], - [149.709963, -6.316513], - [148.890065, -6.02604], - [148.318937, -5.747142], - [148.401826, -5.437756], - [149.298412, -5.583742], - [149.845562, -5.505503], - [149.99625, -5.026101], - [150.139756, -5.001348], - [150.236908, -5.53222], - [150.807467, -5.455842], - [151.089672, -5.113693], - [151.647881, -4.757074], - [151.537862, -4.167807], - [152.136792, -4.14879], - [152.338743, -4.312966], - [152.318693, -4.867661], - [151.982796, -5.478063] - ] - ], - [ - [ - [147.191874, -7.388024], - [148.084636, -8.044108], - [148.734105, -9.104664], - [149.306835, -9.071436], - [149.266631, -9.514406], - [150.038728, -9.684318], - [149.738798, -9.872937], - [150.801628, -10.293687], - [150.690575, -10.582713], - [150.028393, -10.652476], - [149.78231, -10.393267], - [148.923138, -10.280923], - [147.913018, -10.130441], - [147.135443, -9.492444], - [146.567881, -8.942555], - [146.048481, -8.067414], - [144.744168, -7.630128], - [143.897088, -7.91533], - [143.286376, -8.245491], - [143.413913, -8.983069], - [142.628431, -9.326821], - [142.068259, -9.159596], - [141.033852, -9.117893], - [141.017057, -5.859022], - [141.00021, -2.600151], - [142.735247, -3.289153], - [144.583971, -3.861418], - [145.27318, -4.373738], - [145.829786, -4.876498], - [145.981922, -5.465609], - [147.648073, -6.083659], - [147.891108, -6.614015], - [146.970905, -6.721657], - [147.191874, -7.388024] - ] - ], - [ - [ - [153.140038, -4.499983], - [152.827292, -4.766427], - [152.638673, -4.176127], - [152.406026, -3.789743], - [151.953237, -3.462062], - [151.384279, -3.035422], - [150.66205, -2.741486], - [150.939965, -2.500002], - [151.479984, -2.779985], - [151.820015, -2.999972], - [152.239989, -3.240009], - [152.640017, -3.659983], - [153.019994, -3.980015], - [153.140038, -4.499983] - ] - ] - ] - }, - "id": "PNG" - }, - { - "type": "Feature", - "properties": { "name": "Poland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [15.016996, 51.106674], - [14.607098, 51.745188], - [14.685026, 52.089947], - [14.4376, 52.62485], - [14.074521, 52.981263], - [14.353315, 53.248171], - [14.119686, 53.757029], - [14.8029, 54.050706], - [16.363477, 54.513159], - [17.622832, 54.851536], - [18.620859, 54.682606], - [18.696255, 54.438719], - [19.66064, 54.426084], - [20.892245, 54.312525], - [22.731099, 54.327537], - [23.243987, 54.220567], - [23.484128, 53.912498], - [23.527536, 53.470122], - [23.804935, 53.089731], - [23.799199, 52.691099], - [23.199494, 52.486977], - [23.508002, 52.023647], - [23.527071, 51.578454], - [24.029986, 50.705407], - [23.922757, 50.424881], - [23.426508, 50.308506], - [22.51845, 49.476774], - [22.776419, 49.027395], - [22.558138, 49.085738], - [21.607808, 49.470107], - [20.887955, 49.328772], - [20.415839, 49.431453], - [19.825023, 49.217125], - [19.320713, 49.571574], - [18.909575, 49.435846], - [18.853144, 49.49623], - [18.392914, 49.988629], - [17.649445, 50.049038], - [17.554567, 50.362146], - [16.868769, 50.473974], - [16.719476, 50.215747], - [16.176253, 50.422607], - [16.238627, 50.697733], - [15.490972, 50.78473], - [15.016996, 51.106674] - ] - ] - }, - "id": "POL" - }, - { - "type": "Feature", - "properties": { "name": "Puerto Rico" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-66.282434, 18.514762], - [-65.771303, 18.426679], - [-65.591004, 18.228035], - [-65.847164, 17.975906], - [-66.599934, 17.981823], - [-67.184162, 17.946553], - [-67.242428, 18.37446], - [-67.100679, 18.520601], - [-66.282434, 18.514762] - ] - ] - }, - "id": "PRI" - }, - { - "type": "Feature", - "properties": { "name": "North Korea" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [130.640016, 42.395009], - [130.780007, 42.220007], - [130.400031, 42.280004], - [129.965949, 41.941368], - [129.667362, 41.601104], - [129.705189, 40.882828], - [129.188115, 40.661808], - [129.0104, 40.485436], - [128.633368, 40.189847], - [127.967414, 40.025413], - [127.533436, 39.75685], - [127.50212, 39.323931], - [127.385434, 39.213472], - [127.783343, 39.050898], - [128.349716, 38.612243], - [128.205746, 38.370397], - [127.780035, 38.304536], - [127.073309, 38.256115], - [126.68372, 37.804773], - [126.237339, 37.840378], - [126.174759, 37.749686], - [125.689104, 37.94001], - [125.568439, 37.752089], - [125.27533, 37.669071], - [125.240087, 37.857224], - [124.981033, 37.948821], - [124.712161, 38.108346], - [124.985994, 38.548474], - [125.221949, 38.665857], - [125.132859, 38.848559], - [125.38659, 39.387958], - [125.321116, 39.551385], - [124.737482, 39.660344], - [124.265625, 39.928493], - [125.079942, 40.569824], - [126.182045, 41.107336], - [126.869083, 41.816569], - [127.343783, 41.503152], - [128.208433, 41.466772], - [128.052215, 41.994285], - [129.596669, 42.424982], - [129.994267, 42.985387], - [130.640016, 42.395009] - ] - ] - }, - "id": "PRK" - }, - { - "type": "Feature", - "properties": { "name": "Portugal" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-9.034818, 41.880571], - [-8.671946, 42.134689], - [-8.263857, 42.280469], - [-8.013175, 41.790886], - [-7.422513, 41.792075], - [-7.251309, 41.918346], - [-6.668606, 41.883387], - [-6.389088, 41.381815], - [-6.851127, 41.111083], - [-6.86402, 40.330872], - [-7.026413, 40.184524], - [-7.066592, 39.711892], - [-7.498632, 39.629571], - [-7.098037, 39.030073], - [-7.374092, 38.373059], - [-7.029281, 38.075764], - [-7.166508, 37.803894], - [-7.537105, 37.428904], - [-7.453726, 37.097788], - [-7.855613, 36.838269], - [-8.382816, 36.97888], - [-8.898857, 36.868809], - [-8.746101, 37.651346], - [-8.839998, 38.266243], - [-9.287464, 38.358486], - [-9.526571, 38.737429], - [-9.446989, 39.392066], - [-9.048305, 39.755093], - [-8.977353, 40.159306], - [-8.768684, 40.760639], - [-8.790853, 41.184334], - [-8.990789, 41.543459], - [-9.034818, 41.880571] - ] - ] - }, - "id": "PRT" - }, - { - "type": "Feature", - "properties": { "name": "Paraguay" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-62.685057, -22.249029], - [-62.291179, -21.051635], - [-62.265961, -20.513735], - [-61.786326, -19.633737], - [-60.043565, -19.342747], - [-59.115042, -19.356906], - [-58.183471, -19.868399], - [-58.166392, -20.176701], - [-57.870674, -20.732688], - [-57.937156, -22.090176], - [-56.88151, -22.282154], - [-56.473317, -22.0863], - [-55.797958, -22.35693], - [-55.610683, -22.655619], - [-55.517639, -23.571998], - [-55.400747, -23.956935], - [-55.027902, -24.001274], - [-54.652834, -23.839578], - [-54.29296, -24.021014], - [-54.293476, -24.5708], - [-54.428946, -25.162185], - [-54.625291, -25.739255], - [-54.788795, -26.621786], - [-55.695846, -27.387837], - [-56.486702, -27.548499], - [-57.60976, -27.395899], - [-58.618174, -27.123719], - [-57.63366, -25.603657], - [-57.777217, -25.16234], - [-58.807128, -24.771459], - [-60.028966, -24.032796], - [-60.846565, -23.880713], - [-62.685057, -22.249029] - ] - ] - }, - "id": "PRY" - }, - { - "type": "Feature", - "properties": { "name": "Qatar" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [50.810108, 24.754743], - [50.743911, 25.482424], - [51.013352, 26.006992], - [51.286462, 26.114582], - [51.589079, 25.801113], - [51.6067, 25.21567], - [51.389608, 24.627386], - [51.112415, 24.556331], - [50.810108, 24.754743] - ] - ] - }, - "id": "QAT" - }, - { - "type": "Feature", - "properties": { "name": "Romania" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.710531, 47.882194], - [23.142236, 48.096341], - [23.760958, 47.985598], - [24.402056, 47.981878], - [24.866317, 47.737526], - [25.207743, 47.891056], - [25.945941, 47.987149], - [26.19745, 48.220881], - [26.619337, 48.220726], - [26.924176, 48.123264], - [27.233873, 47.826771], - [27.551166, 47.405117], - [28.12803, 46.810476], - [28.160018, 46.371563], - [28.054443, 45.944586], - [28.233554, 45.488283], - [28.679779, 45.304031], - [29.149725, 45.464925], - [29.603289, 45.293308], - [29.626543, 45.035391], - [29.141612, 44.82021], - [28.837858, 44.913874], - [28.558081, 43.707462], - [27.970107, 43.812468], - [27.2424, 44.175986], - [26.065159, 43.943494], - [25.569272, 43.688445], - [24.100679, 43.741051], - [23.332302, 43.897011], - [22.944832, 43.823785], - [22.65715, 44.234923], - [22.474008, 44.409228], - [22.705726, 44.578003], - [22.459022, 44.702517], - [22.145088, 44.478422], - [21.562023, 44.768947], - [21.483526, 45.18117], - [20.874313, 45.416375], - [20.762175, 45.734573], - [20.220192, 46.127469], - [21.021952, 46.316088], - [21.626515, 46.994238], - [22.099768, 47.672439], - [22.710531, 47.882194] - ] - ] - }, - "id": "ROU" - }, - { - "type": "Feature", - "properties": { "name": "Russia" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [143.648007, 50.7476], - [144.654148, 48.976391], - [143.173928, 49.306551], - [142.558668, 47.861575], - [143.533492, 46.836728], - [143.505277, 46.137908], - [142.747701, 46.740765], - [142.09203, 45.966755], - [141.906925, 46.805929], - [142.018443, 47.780133], - [141.904445, 48.859189], - [142.1358, 49.615163], - [142.179983, 50.952342], - [141.594076, 51.935435], - [141.682546, 53.301966], - [142.606934, 53.762145], - [142.209749, 54.225476], - [142.654786, 54.365881], - [142.914616, 53.704578], - [143.260848, 52.74076], - [143.235268, 51.75666], - [143.648007, 50.7476] - ] - ], - [ - [ - [22.731099, 54.327537], - [20.892245, 54.312525], - [19.66064, 54.426084], - [19.888481, 54.86616], - [21.268449, 55.190482], - [22.315724, 55.015299], - [22.757764, 54.856574], - [22.651052, 54.582741], - [22.731099, 54.327537] - ] - ], - [ - [ - [-175.01425, 66.58435], - [-174.33983, 66.33556], - [-174.57182, 67.06219], - [-171.85731, 66.91308], - [-169.89958, 65.97724], - [-170.89107, 65.54139], - [-172.53025, 65.43791], - [-172.555, 64.46079], - [-172.95533, 64.25269], - [-173.89184, 64.2826], - [-174.65392, 64.63125], - [-175.98353, 64.92288], - [-176.20716, 65.35667], - [-177.22266, 65.52024], - [-178.35993, 65.39052], - [-178.90332, 65.74044], - [-178.68611, 66.11211], - [-179.88377, 65.87456], - [-179.43268, 65.40411], - [-180, 64.979709], - [-180, 68.963636], - [-177.55, 68.2], - [-174.92825, 67.20589], - [-175.01425, 66.58435] - ] - ], - [ - [ - [180, 70.832199], - [178.903425, 70.78114], - [178.7253, 71.0988], - [180, 71.515714], - [180, 70.832199] - ] - ], - [ - [ - [-178.69378, 70.89302], - [-180, 70.832199], - [-180, 71.515714], - [-179.871875, 71.55762], - [-179.02433, 71.55553], - [-177.577945, 71.26948], - [-177.663575, 71.13277], - [-178.69378, 70.89302] - ] - ], - [ - [ - [143.60385, 73.21244], - [142.08763, 73.20544], - [140.038155, 73.31692], - [139.86312, 73.36983], - [140.81171, 73.76506], - [142.06207, 73.85758], - [143.48283, 73.47525], - [143.60385, 73.21244] - ] - ], - [ - [ - [150.73167, 75.08406], - [149.575925, 74.68892], - [147.977465, 74.778355], - [146.11919, 75.17298], - [146.358485, 75.49682], - [148.22223, 75.345845], - [150.73167, 75.08406] - ] - ], - [ - [ - [145.086285, 75.562625], - [144.3, 74.82], - [140.61381, 74.84768], - [138.95544, 74.61148], - [136.97439, 75.26167], - [137.51176, 75.94917], - [138.831075, 76.13676], - [141.471615, 76.09289], - [145.086285, 75.562625] - ] - ], - [ - [ - [57.535693, 70.720464], - [56.944979, 70.632743], - [53.677375, 70.762658], - [53.412017, 71.206662], - [51.601895, 71.474759], - [51.455754, 72.014881], - [52.478275, 72.229442], - [52.444169, 72.774731], - [54.427614, 73.627548], - [53.50829, 73.749814], - [55.902459, 74.627486], - [55.631933, 75.081412], - [57.868644, 75.60939], - [61.170044, 76.251883], - [64.498368, 76.439055], - [66.210977, 76.809782], - [68.15706, 76.939697], - [68.852211, 76.544811], - [68.180573, 76.233642], - [64.637326, 75.737755], - [61.583508, 75.260885], - [58.477082, 74.309056], - [56.986786, 73.333044], - [55.419336, 72.371268], - [55.622838, 71.540595], - [57.535693, 70.720464] - ] - ], - [ - [ - [106.97013, 76.97419], - [107.24, 76.48], - [108.1538, 76.72335], - [111.07726, 76.71], - [113.33151, 76.22224], - [114.13417, 75.84764], - [113.88539, 75.32779], - [112.77918, 75.03186], - [110.15125, 74.47673], - [109.4, 74.18], - [110.64, 74.04], - [112.11919, 73.78774], - [113.01954, 73.97693], - [113.52958, 73.33505], - [113.96881, 73.59488], - [115.56782, 73.75285], - [118.77633, 73.58772], - [119.02, 73.12], - [123.20066, 72.97122], - [123.25777, 73.73503], - [125.38, 73.56], - [126.97644, 73.56549], - [128.59126, 73.03871], - [129.05157, 72.39872], - [128.46, 71.98], - [129.71599, 71.19304], - [131.28858, 70.78699], - [132.2535, 71.8363], - [133.85766, 71.38642], - [135.56193, 71.65525], - [137.49755, 71.34763], - [138.23409, 71.62803], - [139.86983, 71.48783], - [139.14791, 72.41619], - [140.46817, 72.84941], - [149.5, 72.2], - [150.35118, 71.60643], - [152.9689, 70.84222], - [157.00688, 71.03141], - [158.99779, 70.86672], - [159.83031, 70.45324], - [159.70866, 69.72198], - [160.94053, 69.43728], - [162.27907, 69.64204], - [164.05248, 69.66823], - [165.94037, 69.47199], - [167.83567, 69.58269], - [169.57763, 68.6938], - [170.81688, 69.01363], - [170.0082, 69.65276], - [170.45345, 70.09703], - [173.64391, 69.81743], - [175.72403, 69.87725], - [178.6, 69.4], - [180, 68.963636], - [180, 64.979709], - [179.99281, 64.97433], - [178.7072, 64.53493], - [177.41128, 64.60821], - [178.313, 64.07593], - [178.90825, 63.25197], - [179.37034, 62.98262], - [179.48636, 62.56894], - [179.22825, 62.3041], - [177.3643, 62.5219], - [174.56929, 61.76915], - [173.68013, 61.65261], - [172.15, 60.95], - [170.6985, 60.33618], - [170.33085, 59.88177], - [168.90046, 60.57355], - [166.29498, 59.78855], - [165.84, 60.16], - [164.87674, 59.7316], - [163.53929, 59.86871], - [163.21711, 59.21101], - [162.01733, 58.24328], - [162.05297, 57.83912], - [163.19191, 57.61503], - [163.05794, 56.15924], - [162.12958, 56.12219], - [161.70146, 55.28568], - [162.11749, 54.85514], - [160.36877, 54.34433], - [160.02173, 53.20257], - [158.53094, 52.95868], - [158.23118, 51.94269], - [156.78979, 51.01105], - [156.42, 51.7], - [155.99182, 53.15895], - [155.43366, 55.38103], - [155.91442, 56.76792], - [156.75815, 57.3647], - [156.81035, 57.83204], - [158.36433, 58.05575], - [160.15064, 59.31477], - [161.87204, 60.343], - [163.66969, 61.1409], - [164.47355, 62.55061], - [163.25842, 62.46627], - [162.65791, 61.6425], - [160.12148, 60.54423], - [159.30232, 61.77396], - [156.72068, 61.43442], - [154.21806, 59.75818], - [155.04375, 59.14495], - [152.81185, 58.88385], - [151.26573, 58.78089], - [151.33815, 59.50396], - [149.78371, 59.65573], - [148.54481, 59.16448], - [145.48722, 59.33637], - [142.19782, 59.03998], - [138.95848, 57.08805], - [135.12619, 54.72959], - [136.70171, 54.60355], - [137.19342, 53.97732], - [138.1647, 53.75501], - [138.80463, 54.25455], - [139.90151, 54.18968], - [141.34531, 53.08957], - [141.37923, 52.23877], - [140.59742, 51.23967], - [140.51308, 50.04553], - [140.06193, 48.44671], - [138.55472, 46.99965], - [138.21971, 46.30795], - [136.86232, 45.1435], - [135.51535, 43.989], - [134.86939, 43.39821], - [133.53687, 42.81147], - [132.90627, 42.79849], - [132.27807, 43.28456], - [130.93587, 42.55274], - [130.78, 42.22], - [130.64, 42.395], - [130.633866, 42.903015], - [131.144688, 42.92999], - [131.288555, 44.11152], - [131.02519, 44.96796], - [131.883454, 45.321162], - [133.09712, 45.14409], - [133.769644, 46.116927], - [134.11235, 47.21248], - [134.50081, 47.57845], - [135.026311, 48.47823], - [133.373596, 48.183442], - [132.50669, 47.78896], - [130.98726, 47.79013], - [130.582293, 48.729687], - [129.397818, 49.4406], - [127.6574, 49.76027], - [127.287456, 50.739797], - [126.939157, 51.353894], - [126.564399, 51.784255], - [125.946349, 52.792799], - [125.068211, 53.161045], - [123.57147, 53.4588], - [122.245748, 53.431726], - [121.003085, 53.251401], - [120.177089, 52.753886], - [120.725789, 52.516226], - [120.7382, 51.96411], - [120.18208, 51.64355], - [119.27939, 50.58292], - [119.288461, 50.142883], - [117.879244, 49.510983], - [116.678801, 49.888531], - [115.485695, 49.805177], - [114.96211, 50.140247], - [114.362456, 50.248303], - [112.89774, 49.543565], - [111.581231, 49.377968], - [110.662011, 49.130128], - [109.402449, 49.292961], - [108.475167, 49.282548], - [107.868176, 49.793705], - [106.888804, 50.274296], - [105.886591, 50.406019], - [104.62158, 50.27532], - [103.676545, 50.089966], - [102.25589, 50.51056], - [102.06521, 51.25991], - [100.88948, 51.516856], - [99.981732, 51.634006], - [98.861491, 52.047366], - [97.82574, 51.010995], - [98.231762, 50.422401], - [97.25976, 49.72605], - [95.81402, 49.97746], - [94.815949, 50.013433], - [94.147566, 50.480537], - [93.10421, 50.49529], - [92.234712, 50.802171], - [90.713667, 50.331812], - [88.805567, 49.470521], - [87.751264, 49.297198], - [87.35997, 49.214981], - [86.829357, 49.826675], - [85.54127, 49.692859], - [85.11556, 50.117303], - [84.416377, 50.3114], - [83.935115, 50.889246], - [83.383004, 51.069183], - [81.945986, 50.812196], - [80.568447, 51.388336], - [80.03556, 50.864751], - [77.800916, 53.404415], - [76.525179, 54.177003], - [76.8911, 54.490524], - [74.38482, 53.54685], - [73.425679, 53.48981], - [73.508516, 54.035617], - [72.22415, 54.376655], - [71.180131, 54.133285], - [70.865267, 55.169734], - [69.068167, 55.38525], - [68.1691, 54.970392], - [65.66687, 54.60125], - [65.178534, 54.354228], - [61.4366, 54.00625], - [60.978066, 53.664993], - [61.699986, 52.979996], - [60.739993, 52.719986], - [60.927269, 52.447548], - [59.967534, 51.96042], - [61.588003, 51.272659], - [61.337424, 50.79907], - [59.932807, 50.842194], - [59.642282, 50.545442], - [58.36332, 51.06364], - [56.77798, 51.04355], - [55.71694, 50.62171], - [54.532878, 51.02624], - [52.328724, 51.718652], - [50.766648, 51.692762], - [48.702382, 50.605128], - [48.577841, 49.87476], - [47.54948, 50.454698], - [46.751596, 49.356006], - [47.043672, 49.152039], - [46.466446, 48.394152], - [47.31524, 47.71585], - [48.05725, 47.74377], - [48.694734, 47.075628], - [48.59325, 46.56104], - [49.10116, 46.39933], - [48.64541, 45.80629], - [47.67591, 45.64149], - [46.68201, 44.6092], - [47.59094, 43.66016], - [47.49252, 42.98658], - [48.58437, 41.80888], - [47.987283, 41.405819], - [47.815666, 41.151416], - [47.373315, 41.219732], - [46.686071, 41.827137], - [46.404951, 41.860675], - [45.7764, 42.09244], - [45.470279, 42.502781], - [44.537623, 42.711993], - [43.93121, 42.55496], - [43.75599, 42.74083], - [42.3944, 43.2203], - [40.92219, 43.38215], - [40.076965, 43.553104], - [39.955009, 43.434998], - [38.68, 44.28], - [37.53912, 44.65721], - [36.67546, 45.24469], - [37.40317, 45.40451], - [38.23295, 46.24087], - [37.67372, 46.63657], - [39.14767, 47.04475], - [39.1212, 47.26336], - [38.223538, 47.10219], - [38.255112, 47.5464], - [38.77057, 47.82562], - [39.738278, 47.898937], - [39.89562, 48.23241], - [39.67465, 48.78382], - [40.080789, 49.30743], - [40.06904, 49.60105], - [38.594988, 49.926462], - [38.010631, 49.915662], - [37.39346, 50.383953], - [36.626168, 50.225591], - [35.356116, 50.577197], - [35.37791, 50.77394], - [35.022183, 51.207572], - [34.224816, 51.255993], - [34.141978, 51.566413], - [34.391731, 51.768882], - [33.7527, 52.335075], - [32.715761, 52.238465], - [32.412058, 52.288695], - [32.15944, 52.06125], - [31.78597, 52.10168], - [31.540018, 52.742052], - [31.305201, 53.073996], - [31.49764, 53.16743], - [32.304519, 53.132726], - [32.693643, 53.351421], - [32.405599, 53.618045], - [31.731273, 53.794029], - [31.791424, 53.974639], - [31.384472, 54.157056], - [30.757534, 54.811771], - [30.971836, 55.081548], - [30.873909, 55.550976], - [29.896294, 55.789463], - [29.371572, 55.670091], - [29.229513, 55.918344], - [28.176709, 56.16913], - [27.855282, 56.759326], - [27.770016, 57.244258], - [27.288185, 57.474528], - [27.716686, 57.791899], - [27.42015, 58.72457], - [28.131699, 59.300825], - [27.98112, 59.47537], - [29.1177, 60.02805], - [28.07, 60.50352], - [30.211107, 61.780028], - [31.139991, 62.357693], - [31.516092, 62.867687], - [30.035872, 63.552814], - [30.444685, 64.204453], - [29.54443, 64.948672], - [30.21765, 65.80598], - [29.054589, 66.944286], - [29.977426, 67.698297], - [28.445944, 68.364613], - [28.59193, 69.064777], - [29.39955, 69.15692], - [31.10108, 69.55811], - [32.13272, 69.90595], - [33.77547, 69.30142], - [36.51396, 69.06342], - [40.29234, 67.9324], - [41.05987, 67.45713], - [41.12595, 66.79158], - [40.01583, 66.26618], - [38.38295, 65.99953], - [33.91871, 66.75961], - [33.18444, 66.63253], - [34.81477, 65.90015], - [34.878574, 65.436213], - [34.94391, 64.41437], - [36.23129, 64.10945], - [37.01273, 63.84983], - [37.14197, 64.33471], - [36.539579, 64.76446], - [37.17604, 65.14322], - [39.59345, 64.52079], - [40.4356, 64.76446], - [39.7626, 65.49682], - [42.09309, 66.47623], - [43.01604, 66.41858], - [43.94975, 66.06908], - [44.53226, 66.75634], - [43.69839, 67.35245], - [44.18795, 67.95051], - [43.45282, 68.57079], - [46.25, 68.25], - [46.82134, 67.68997], - [45.55517, 67.56652], - [45.56202, 67.01005], - [46.34915, 66.66767], - [47.89416, 66.88455], - [48.13876, 67.52238], - [50.22766, 67.99867], - [53.71743, 68.85738], - [54.47171, 68.80815], - [53.48582, 68.20131], - [54.72628, 68.09702], - [55.44268, 68.43866], - [57.31702, 68.46628], - [58.802, 68.88082], - [59.94142, 68.27844], - [61.07784, 68.94069], - [60.03, 69.52], - [60.55, 69.85], - [63.504, 69.54739], - [64.888115, 69.234835], - [68.51216, 68.09233], - [69.18068, 68.61563], - [68.16444, 69.14436], - [68.13522, 69.35649], - [66.93008, 69.45461], - [67.25976, 69.92873], - [66.72492, 70.70889], - [66.69466, 71.02897], - [68.54006, 71.9345], - [69.19636, 72.84336], - [69.94, 73.04], - [72.58754, 72.77629], - [72.79603, 72.22006], - [71.84811, 71.40898], - [72.47011, 71.09019], - [72.79188, 70.39114], - [72.5647, 69.02085], - [73.66787, 68.4079], - [73.2387, 67.7404], - [71.28, 66.32], - [72.42301, 66.17267], - [72.82077, 66.53267], - [73.92099, 66.78946], - [74.18651, 67.28429], - [75.052, 67.76047], - [74.46926, 68.32899], - [74.93584, 68.98918], - [73.84236, 69.07146], - [73.60187, 69.62763], - [74.3998, 70.63175], - [73.1011, 71.44717], - [74.89082, 72.12119], - [74.65926, 72.83227], - [75.15801, 72.85497], - [75.68351, 72.30056], - [75.28898, 71.33556], - [76.35911, 71.15287], - [75.90313, 71.87401], - [77.57665, 72.26717], - [79.65202, 72.32011], - [81.5, 71.75], - [80.61071, 72.58285], - [80.51109, 73.6482], - [82.25, 73.85], - [84.65526, 73.80591], - [86.8223, 73.93688], - [86.00956, 74.45967], - [87.16682, 75.11643], - [88.31571, 75.14393], - [90.26, 75.64], - [92.90058, 75.77333], - [93.23421, 76.0472], - [95.86, 76.14], - [96.67821, 75.91548], - [98.92254, 76.44689], - [100.75967, 76.43028], - [101.03532, 76.86189], - [101.99084, 77.28754], - [104.3516, 77.69792], - [106.06664, 77.37389], - [104.705, 77.1274], - [106.97013, 76.97419] - ] - ], - [ - [ - [105.07547, 78.30689], - [99.43814, 77.921], - [101.2649, 79.23399], - [102.08635, 79.34641], - [102.837815, 79.28129], - [105.37243, 78.71334], - [105.07547, 78.30689] - ] - ], - [ - [ - [51.136187, 80.54728], - [49.793685, 80.415428], - [48.894411, 80.339567], - [48.754937, 80.175468], - [47.586119, 80.010181], - [46.502826, 80.247247], - [47.072455, 80.559424], - [44.846958, 80.58981], - [46.799139, 80.771918], - [48.318477, 80.78401], - [48.522806, 80.514569], - [49.09719, 80.753986], - [50.039768, 80.918885], - [51.522933, 80.699726], - [51.136187, 80.54728] - ] - ], - [ - [ - [99.93976, 78.88094], - [97.75794, 78.7562], - [94.97259, 79.044745], - [93.31288, 79.4265], - [92.5454, 80.14379], - [91.18107, 80.34146], - [93.77766, 81.0246], - [95.940895, 81.2504], - [97.88385, 80.746975], - [100.186655, 79.780135], - [99.93976, 78.88094] - ] - ] - ] - }, - "id": "RUS" - }, - { - "type": "Feature", - "properties": { "name": "Rwanda" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [30.419105, -1.134659], - [30.816135, -1.698914], - [30.758309, -2.28725], - [30.469696, -2.413858], - [29.938359, -2.348487], - [29.632176, -2.917858], - [29.024926, -2.839258], - [29.117479, -2.292211], - [29.254835, -2.21511], - [29.291887, -1.620056], - [29.579466, -1.341313], - [29.821519, -1.443322], - [30.419105, -1.134659] - ] - ] - }, - "id": "RWA" - }, - { - "type": "Feature", - "properties": { "name": "Western Sahara" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-8.794884, 27.120696], - [-8.817828, 27.656426], - [-8.66559, 27.656426], - [-8.665124, 27.589479], - [-8.6844, 27.395744], - [-8.687294, 25.881056], - [-11.969419, 25.933353], - [-11.937224, 23.374594], - [-12.874222, 23.284832], - [-13.118754, 22.77122], - [-12.929102, 21.327071], - [-16.845194, 21.333323], - [-17.063423, 20.999752], - [-17.020428, 21.42231], - [-17.002962, 21.420734], - [-14.750955, 21.5006], - [-14.630833, 21.86094], - [-14.221168, 22.310163], - [-13.89111, 23.691009], - [-12.500963, 24.770116], - [-12.030759, 26.030866], - [-11.71822, 26.104092], - [-11.392555, 26.883424], - [-10.551263, 26.990808], - [-10.189424, 26.860945], - [-9.735343, 26.860945], - [-9.413037, 27.088476], - [-8.794884, 27.120696] - ] - ] - }, - "id": "ESH" - }, - { - "type": "Feature", - "properties": { "name": "Saudi Arabia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [42.779332, 16.347891], - [42.649573, 16.774635], - [42.347989, 17.075806], - [42.270888, 17.474722], - [41.754382, 17.833046], - [41.221391, 18.6716], - [40.939341, 19.486485], - [40.247652, 20.174635], - [39.801685, 20.338862], - [39.139399, 21.291905], - [39.023696, 21.986875], - [39.066329, 22.579656], - [38.492772, 23.688451], - [38.02386, 24.078686], - [37.483635, 24.285495], - [37.154818, 24.858483], - [37.209491, 25.084542], - [36.931627, 25.602959], - [36.639604, 25.826228], - [36.249137, 26.570136], - [35.640182, 27.37652], - [35.130187, 28.063352], - [34.632336, 28.058546], - [34.787779, 28.607427], - [34.83222, 28.957483], - [34.956037, 29.356555], - [36.068941, 29.197495], - [36.501214, 29.505254], - [36.740528, 29.865283], - [37.503582, 30.003776], - [37.66812, 30.338665], - [37.998849, 30.5085], - [37.002166, 31.508413], - [39.004886, 32.010217], - [39.195468, 32.161009], - [40.399994, 31.889992], - [41.889981, 31.190009], - [44.709499, 29.178891], - [46.568713, 29.099025], - [47.459822, 29.002519], - [47.708851, 28.526063], - [48.416094, 28.552004], - [48.807595, 27.689628], - [49.299554, 27.461218], - [49.470914, 27.109999], - [50.152422, 26.689663], - [50.212935, 26.277027], - [50.113303, 25.943972], - [50.239859, 25.60805], - [50.527387, 25.327808], - [50.660557, 24.999896], - [50.810108, 24.754743], - [51.112415, 24.556331], - [51.389608, 24.627386], - [51.579519, 24.245497], - [51.617708, 24.014219], - [52.000733, 23.001154], - [55.006803, 22.496948], - [55.208341, 22.70833], - [55.666659, 22.000001], - [54.999982, 19.999994], - [52.00001, 19.000003], - [49.116672, 18.616668], - [48.183344, 18.166669], - [47.466695, 17.116682], - [47.000005, 16.949999], - [46.749994, 17.283338], - [46.366659, 17.233315], - [45.399999, 17.333335], - [45.216651, 17.433329], - [44.062613, 17.410359], - [43.791519, 17.319977], - [43.380794, 17.579987], - [43.115798, 17.08844], - [43.218375, 16.66689], - [42.779332, 16.347891] - ] - ] - }, - "id": "SAU" - }, - { - "type": "Feature", - "properties": { "name": "Sudan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.963393, 9.464285], - [33.824963, 9.484061], - [33.842131, 9.981915], - [33.721959, 10.325262], - [33.206938, 10.720112], - [33.086766, 11.441141], - [33.206938, 12.179338], - [32.743419, 12.248008], - [32.67475, 12.024832], - [32.073892, 11.97333], - [32.314235, 11.681484], - [32.400072, 11.080626], - [31.850716, 10.531271], - [31.352862, 9.810241], - [30.837841, 9.707237], - [29.996639, 10.290927], - [29.618957, 10.084919], - [29.515953, 9.793074], - [29.000932, 9.604232], - [28.966597, 9.398224], - [27.97089, 9.398224], - [27.833551, 9.604232], - [27.112521, 9.638567], - [26.752006, 9.466893], - [26.477328, 9.55273], - [25.962307, 10.136421], - [25.790633, 10.411099], - [25.069604, 10.27376], - [24.794926, 9.810241], - [24.537415, 8.917538], - [24.194068, 8.728696], - [23.88698, 8.61973], - [23.805813, 8.666319], - [23.459013, 8.954286], - [23.394779, 9.265068], - [23.55725, 9.681218], - [23.554304, 10.089255], - [22.977544, 10.714463], - [22.864165, 11.142395], - [22.87622, 11.38461], - [22.50869, 11.67936], - [22.49762, 12.26024], - [22.28801, 12.64605], - [21.93681, 12.58818], - [22.03759, 12.95546], - [22.29658, 13.37232], - [22.18329, 13.78648], - [22.51202, 14.09318], - [22.30351, 14.32682], - [22.56795, 14.94429], - [23.02459, 15.68072], - [23.88689, 15.61084], - [23.83766, 19.58047], - [23.85, 20], - [25, 20.00304], - [25, 22], - [29.02, 22], - [32.9, 22], - [36.86623, 22], - [37.18872, 21.01885], - [36.96941, 20.83744], - [37.1147, 19.80796], - [37.48179, 18.61409], - [37.86276, 18.36786], - [38.41009, 17.998307], - [37.904, 17.42754], - [37.16747, 17.26314], - [36.85253, 16.95655], - [36.75389, 16.29186], - [36.32322, 14.82249], - [36.42951, 14.42211], - [36.27022, 13.56333], - [35.86363, 12.57828], - [35.26049, 12.08286], - [34.83163, 11.31896], - [34.73115, 10.91017], - [34.25745, 10.63009], - [33.96162, 9.58358], - [33.963393, 9.464285] - ] - ] - }, - "id": "SDN" - }, - { - "type": "Feature", - "properties": { "name": "South Sudan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.963393, 9.464285], - [33.97498, 8.68456], - [33.8255, 8.37916], - [33.2948, 8.35458], - [32.95418, 7.78497], - [33.56829, 7.71334], - [34.0751, 7.22595], - [34.25032, 6.82607], - [34.70702, 6.59422], - [35.298007, 5.506], - [34.620196, 4.847123], - [34.005, 4.249885], - [33.39, 3.79], - [32.68642, 3.79232], - [31.88145, 3.55827], - [31.24556, 3.7819], - [30.83385, 3.50917], - [29.95349, 4.1737], - [29.715995, 4.600805], - [29.159078, 4.389267], - [28.696678, 4.455077], - [28.428994, 4.287155], - [27.979977, 4.408413], - [27.374226, 5.233944], - [27.213409, 5.550953], - [26.465909, 5.946717], - [26.213418, 6.546603], - [25.796648, 6.979316], - [25.124131, 7.500085], - [25.114932, 7.825104], - [24.567369, 8.229188], - [23.88698, 8.61973], - [24.194068, 8.728696], - [24.537415, 8.917538], - [24.794926, 9.810241], - [25.069604, 10.27376], - [25.790633, 10.411099], - [25.962307, 10.136421], - [26.477328, 9.55273], - [26.752006, 9.466893], - [27.112521, 9.638567], - [27.833551, 9.604232], - [27.97089, 9.398224], - [28.966597, 9.398224], - [29.000932, 9.604232], - [29.515953, 9.793074], - [29.618957, 10.084919], - [29.996639, 10.290927], - [30.837841, 9.707237], - [31.352862, 9.810241], - [31.850716, 10.531271], - [32.400072, 11.080626], - [32.314235, 11.681484], - [32.073892, 11.97333], - [32.67475, 12.024832], - [32.743419, 12.248008], - [33.206938, 12.179338], - [33.086766, 11.441141], - [33.206938, 10.720112], - [33.721959, 10.325262], - [33.842131, 9.981915], - [33.824963, 9.484061], - [33.963393, 9.464285] - ] - ] - }, - "id": "SDS" - }, - { - "type": "Feature", - "properties": { "name": "Senegal" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-16.713729, 13.594959], - [-17.126107, 14.373516], - [-17.625043, 14.729541], - [-17.185173, 14.919477], - [-16.700706, 15.621527], - [-16.463098, 16.135036], - [-16.12069, 16.455663], - [-15.623666, 16.369337], - [-15.135737, 16.587282], - [-14.577348, 16.598264], - [-14.099521, 16.304302], - [-13.435738, 16.039383], - [-12.830658, 15.303692], - [-12.17075, 14.616834], - [-12.124887, 13.994727], - [-11.927716, 13.422075], - [-11.553398, 13.141214], - [-11.467899, 12.754519], - [-11.513943, 12.442988], - [-11.658301, 12.386583], - [-12.203565, 12.465648], - [-12.278599, 12.35444], - [-12.499051, 12.33209], - [-13.217818, 12.575874], - [-13.700476, 12.586183], - [-15.548477, 12.62817], - [-15.816574, 12.515567], - [-16.147717, 12.547762], - [-16.677452, 12.384852], - [-16.841525, 13.151394], - [-15.931296, 13.130284], - [-15.691001, 13.270353], - [-15.511813, 13.27857], - [-15.141163, 13.509512], - [-14.712197, 13.298207], - [-14.277702, 13.280585], - [-13.844963, 13.505042], - [-14.046992, 13.794068], - [-14.376714, 13.62568], - [-14.687031, 13.630357], - [-15.081735, 13.876492], - [-15.39877, 13.860369], - [-15.624596, 13.623587], - [-16.713729, 13.594959] - ] - ] - }, - "id": "SEN" - }, - { - "type": "Feature", - "properties": { "name": "Solomon Islands" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [162.119025, -10.482719], - [162.398646, -10.826367], - [161.700032, -10.820011], - [161.319797, -10.204751], - [161.917383, -10.446701], - [162.119025, -10.482719] - ] - ], - [ - [ - [160.852229, -9.872937], - [160.462588, -9.89521], - [159.849447, -9.794027], - [159.640003, -9.63998], - [159.702945, -9.24295], - [160.362956, -9.400304], - [160.688518, -9.610162], - [160.852229, -9.872937] - ] - ], - [ - [ - [161.679982, -9.599982], - [161.529397, -9.784312], - [160.788253, -8.917543], - [160.579997, -8.320009], - [160.920028, -8.320009], - [161.280006, -9.120011], - [161.679982, -9.599982] - ] - ], - [ - [ - [159.875027, -8.33732], - [159.917402, -8.53829], - [159.133677, -8.114181], - [158.586114, -7.754824], - [158.21115, -7.421872], - [158.359978, -7.320018], - [158.820001, -7.560003], - [159.640003, -8.020027], - [159.875027, -8.33732] - ] - ], - [ - [ - [157.538426, -7.34782], - [157.33942, -7.404767], - [156.90203, -7.176874], - [156.491358, -6.765943], - [156.542828, -6.599338], - [157.14, -7.021638], - [157.538426, -7.34782] - ] - ] - ] - }, - "id": "SLB" - }, - { - "type": "Feature", - "properties": { "name": "Sierra Leone" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-11.438779, 6.785917], - [-11.708195, 6.860098], - [-12.428099, 7.262942], - [-12.949049, 7.798646], - [-13.124025, 8.163946], - [-13.24655, 8.903049], - [-12.711958, 9.342712], - [-12.596719, 9.620188], - [-12.425929, 9.835834], - [-12.150338, 9.858572], - [-11.917277, 10.046984], - [-11.117481, 10.045873], - [-10.839152, 9.688246], - [-10.622395, 9.26791], - [-10.65477, 8.977178], - [-10.494315, 8.715541], - [-10.505477, 8.348896], - [-10.230094, 8.406206], - [-10.695595, 7.939464], - [-11.146704, 7.396706], - [-11.199802, 7.105846], - [-11.438779, 6.785917] - ] - ] - }, - "id": "SLE" - }, - { - "type": "Feature", - "properties": { "name": "El Salvador" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-87.793111, 13.38448], - [-87.904112, 13.149017], - [-88.483302, 13.163951], - [-88.843228, 13.259734], - [-89.256743, 13.458533], - [-89.812394, 13.520622], - [-90.095555, 13.735338], - [-90.064678, 13.88197], - [-89.721934, 14.134228], - [-89.534219, 14.244816], - [-89.587343, 14.362586], - [-89.353326, 14.424133], - [-89.058512, 14.340029], - [-88.843073, 14.140507], - [-88.541231, 13.980155], - [-88.503998, 13.845486], - [-88.065343, 13.964626], - [-87.859515, 13.893312], - [-87.723503, 13.78505], - [-87.793111, 13.38448] - ] - ] - }, - "id": "SLV" - }, - { - "type": "Feature", - "properties": { "name": "Somaliland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [48.93813, 9.451749], - [48.486736, 8.837626], - [47.78942, 8.003], - [46.948328, 7.996877], - [43.67875, 9.18358], - [43.296975, 9.540477], - [42.92812, 10.02194], - [42.55876, 10.57258], - [42.776852, 10.926879], - [43.145305, 11.46204], - [43.47066, 11.27771], - [43.666668, 10.864169], - [44.117804, 10.445538], - [44.614259, 10.442205], - [45.556941, 10.698029], - [46.645401, 10.816549], - [47.525658, 11.127228], - [48.021596, 11.193064], - [48.378784, 11.375482], - [48.948206, 11.410622], - [48.942005, 11.394266], - [48.938491, 10.982327], - [48.938233, 9.9735], - [48.93813, 9.451749] - ] - ] - }, - "id": "ABV" - }, - { - "type": "Feature", - "properties": { "name": "Somalia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [49.72862, 11.5789], - [50.25878, 11.67957], - [50.73202, 12.0219], - [51.1112, 12.02464], - [51.13387, 11.74815], - [51.04153, 11.16651], - [51.04531, 10.6409], - [50.83418, 10.27972], - [50.55239, 9.19874], - [50.07092, 8.08173], - [49.4527, 6.80466], - [48.59455, 5.33911], - [47.74079, 4.2194], - [46.56476, 2.85529], - [45.56399, 2.04576], - [44.06815, 1.05283], - [43.13597, 0.2922], - [42.04157, -0.91916], - [41.81095, -1.44647], - [41.58513, -1.68325], - [40.993, -0.85829], - [40.98105, 2.78452], - [41.855083, 3.918912], - [42.12861, 4.23413], - [42.76967, 4.25259], - [43.66087, 4.95755], - [44.9636, 5.00162], - [47.78942, 8.003], - [48.486736, 8.837626], - [48.93813, 9.451749], - [48.938233, 9.9735], - [48.938491, 10.982327], - [48.942005, 11.394266], - [48.948205, 11.410617], - [49.26776, 11.43033], - [49.72862, 11.5789] - ] - ] - }, - "id": "SOM" - }, - { - "type": "Feature", - "properties": { "name": "Republic of Serbia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [20.874313, 45.416375], - [21.483526, 45.18117], - [21.562023, 44.768947], - [22.145088, 44.478422], - [22.459022, 44.702517], - [22.705726, 44.578003], - [22.474008, 44.409228], - [22.65715, 44.234923], - [22.410446, 44.008063], - [22.500157, 43.642814], - [22.986019, 43.211161], - [22.604801, 42.898519], - [22.436595, 42.580321], - [22.545012, 42.461362], - [22.380526, 42.32026], - [21.91708, 42.30364], - [21.576636, 42.245224], - [21.54332, 42.32025], - [21.66292, 42.43922], - [21.77505, 42.6827], - [21.63302, 42.67717], - [21.43866, 42.86255], - [21.27421, 42.90959], - [21.143395, 43.068685], - [20.95651, 43.13094], - [20.81448, 43.27205], - [20.63508, 43.21671], - [20.49679, 42.88469], - [20.25758, 42.81275], - [20.3398, 42.89852], - [19.95857, 43.10604], - [19.63, 43.21378], - [19.48389, 43.35229], - [19.21852, 43.52384], - [19.454, 43.5681], - [19.59976, 44.03847], - [19.11761, 44.42307], - [19.36803, 44.863], - [19.00548, 44.86023], - [19.390476, 45.236516], - [19.072769, 45.521511], - [18.82982, 45.90888], - [19.596045, 46.17173], - [20.220192, 46.127469], - [20.762175, 45.734573], - [20.874313, 45.416375] - ] - ] - }, - "id": "SRB" - }, - { - "type": "Feature", - "properties": { "name": "Suriname" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.147436, 5.97315], - [-55.949318, 5.772878], - [-55.84178, 5.953125], - [-55.03325, 6.025291], - [-53.958045, 5.756548], - [-54.478633, 4.896756], - [-54.399542, 4.212611], - [-54.006931, 3.620038], - [-54.181726, 3.18978], - [-54.269705, 2.732392], - [-54.524754, 2.311849], - [-55.097587, 2.523748], - [-55.569755, 2.421506], - [-55.973322, 2.510364], - [-56.073342, 2.220795], - [-55.9056, 2.021996], - [-55.995698, 1.817667], - [-56.539386, 1.899523], - [-57.150098, 2.768927], - [-57.281433, 3.333492], - [-57.601569, 3.334655], - [-58.044694, 4.060864], - [-57.86021, 4.576801], - [-57.914289, 4.812626], - [-57.307246, 5.073567], - [-57.147436, 5.97315] - ] - ] - }, - "id": "SUR" - }, - { - "type": "Feature", - "properties": { "name": "Slovakia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [18.853144, 49.49623], - [18.909575, 49.435846], - [19.320713, 49.571574], - [19.825023, 49.217125], - [20.415839, 49.431453], - [20.887955, 49.328772], - [21.607808, 49.470107], - [22.558138, 49.085738], - [22.280842, 48.825392], - [22.085608, 48.422264], - [21.872236, 48.319971], - [20.801294, 48.623854], - [20.473562, 48.56285], - [20.239054, 48.327567], - [19.769471, 48.202691], - [19.661364, 48.266615], - [19.174365, 48.111379], - [18.777025, 48.081768], - [18.696513, 47.880954], - [17.857133, 47.758429], - [17.488473, 47.867466], - [16.979667, 48.123497], - [16.879983, 48.470013], - [16.960288, 48.596982], - [17.101985, 48.816969], - [17.545007, 48.800019], - [17.886485, 48.903475], - [17.913512, 48.996493], - [18.104973, 49.043983], - [18.170498, 49.271515], - [18.399994, 49.315001], - [18.554971, 49.495015], - [18.853144, 49.49623] - ] - ] - }, - "id": "SVK" - }, - { - "type": "Feature", - "properties": { "name": "Slovenia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [13.806475, 46.509306], - [14.632472, 46.431817], - [15.137092, 46.658703], - [16.011664, 46.683611], - [16.202298, 46.852386], - [16.370505, 46.841327], - [16.564808, 46.503751], - [15.768733, 46.238108], - [15.67153, 45.834154], - [15.323954, 45.731783], - [15.327675, 45.452316], - [14.935244, 45.471695], - [14.595109, 45.634941], - [14.411968, 45.466166], - [13.71506, 45.500324], - [13.93763, 45.591016], - [13.69811, 46.016778], - [13.806475, 46.509306] - ] - ] - }, - "id": "SVN" - }, - { - "type": "Feature", - "properties": { "name": "Sweden" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [22.183173, 65.723741], - [21.213517, 65.026005], - [21.369631, 64.413588], - [19.778876, 63.609554], - [17.847779, 62.7494], - [17.119555, 61.341166], - [17.831346, 60.636583], - [18.787722, 60.081914], - [17.869225, 58.953766], - [16.829185, 58.719827], - [16.44771, 57.041118], - [15.879786, 56.104302], - [14.666681, 56.200885], - [14.100721, 55.407781], - [12.942911, 55.361737], - [12.625101, 56.30708], - [11.787942, 57.441817], - [11.027369, 58.856149], - [11.468272, 59.432393], - [12.300366, 60.117933], - [12.631147, 61.293572], - [11.992064, 61.800362], - [11.930569, 63.128318], - [12.579935, 64.066219], - [13.571916, 64.049114], - [13.919905, 64.445421], - [13.55569, 64.787028], - [15.108411, 66.193867], - [16.108712, 67.302456], - [16.768879, 68.013937], - [17.729182, 68.010552], - [17.993868, 68.567391], - [19.87856, 68.407194], - [20.025269, 69.065139], - [20.645593, 69.106247], - [21.978535, 68.616846], - [23.539473, 67.936009], - [23.56588, 66.396051], - [23.903379, 66.006927], - [22.183173, 65.723741] - ] - ] - }, - "id": "SWE" - }, - { - "type": "Feature", - "properties": { "name": "Swaziland" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.071665, -26.73382], - [31.86806, -27.177927], - [31.282773, -27.285879], - [30.685962, -26.743845], - [30.676609, -26.398078], - [30.949667, -26.022649], - [31.04408, -25.731452], - [31.333158, -25.660191], - [31.837778, -25.843332], - [31.985779, -26.29178], - [32.071665, -26.73382] - ] - ] - }, - "id": "SWZ" - }, - { - "type": "Feature", - "properties": { "name": "Syria" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [38.792341, 33.378686], - [36.834062, 32.312938], - [35.719918, 32.709192], - [35.700798, 32.716014], - [35.836397, 32.868123], - [35.821101, 33.277426], - [36.06646, 33.824912], - [36.61175, 34.201789], - [36.448194, 34.593935], - [35.998403, 34.644914], - [35.905023, 35.410009], - [36.149763, 35.821535], - [36.41755, 36.040617], - [36.685389, 36.259699], - [36.739494, 36.81752], - [37.066761, 36.623036], - [38.167727, 36.90121], - [38.699891, 36.712927], - [39.52258, 36.716054], - [40.673259, 37.091276], - [41.212089, 37.074352], - [42.349591, 37.229873], - [41.837064, 36.605854], - [41.289707, 36.358815], - [41.383965, 35.628317], - [41.006159, 34.419372], - [38.792341, 33.378686] - ] - ] - }, - "id": "SYR" - }, - { - "type": "Feature", - "properties": { "name": "Chad" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [14.495787, 12.859396], - [14.595781, 13.330427], - [13.954477, 13.353449], - [13.956699, 13.996691], - [13.540394, 14.367134], - [13.97217, 15.68437], - [15.247731, 16.627306], - [15.300441, 17.92795], - [15.685741, 19.95718], - [15.903247, 20.387619], - [15.487148, 20.730415], - [15.47106, 21.04845], - [15.096888, 21.308519], - [14.8513, 22.86295], - [15.86085, 23.40972], - [19.84926, 21.49509], - [23.83766, 19.58047], - [23.88689, 15.61084], - [23.02459, 15.68072], - [22.56795, 14.94429], - [22.30351, 14.32682], - [22.51202, 14.09318], - [22.18329, 13.78648], - [22.29658, 13.37232], - [22.03759, 12.95546], - [21.93681, 12.58818], - [22.28801, 12.64605], - [22.49762, 12.26024], - [22.50869, 11.67936], - [22.87622, 11.38461], - [22.864165, 11.142395], - [22.231129, 10.971889], - [21.723822, 10.567056], - [21.000868, 9.475985], - [20.059685, 9.012706], - [19.094008, 9.074847], - [18.81201, 8.982915], - [18.911022, 8.630895], - [18.389555, 8.281304], - [17.96493, 7.890914], - [16.705988, 7.508328], - [16.456185, 7.734774], - [16.290562, 7.754307], - [16.106232, 7.497088], - [15.27946, 7.421925], - [15.436092, 7.692812], - [15.120866, 8.38215], - [14.979996, 8.796104], - [14.544467, 8.965861], - [13.954218, 9.549495], - [14.171466, 10.021378], - [14.627201, 9.920919], - [14.909354, 9.992129], - [15.467873, 9.982337], - [14.923565, 10.891325], - [14.960152, 11.555574], - [14.89336, 12.21905], - [14.495787, 12.859396] - ] - ] - }, - "id": "TCD" - }, - { - "type": "Feature", - "properties": { "name": "Togo" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [1.865241, 6.142158], - [1.060122, 5.928837], - [0.836931, 6.279979], - [0.570384, 6.914359], - [0.490957, 7.411744], - [0.712029, 8.312465], - [0.461192, 8.677223], - [0.365901, 9.465004], - [0.36758, 10.191213], - [-0.049785, 10.706918], - [0.023803, 11.018682], - [0.899563, 10.997339], - [0.772336, 10.470808], - [1.077795, 10.175607], - [1.425061, 9.825395], - [1.463043, 9.334624], - [1.664478, 9.12859], - [1.618951, 6.832038], - [1.865241, 6.142158] - ] - ] - }, - "id": "TGO" - }, - { - "type": "Feature", - "properties": { "name": "Thailand" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [102.584932, 12.186595], - [101.687158, 12.64574], - [100.83181, 12.627085], - [100.978467, 13.412722], - [100.097797, 13.406856], - [100.018733, 12.307001], - [99.478921, 10.846367], - [99.153772, 9.963061], - [99.222399, 9.239255], - [99.873832, 9.207862], - [100.279647, 8.295153], - [100.459274, 7.429573], - [101.017328, 6.856869], - [101.623079, 6.740622], - [102.141187, 6.221636], - [101.814282, 5.810808], - [101.154219, 5.691384], - [101.075516, 6.204867], - [100.259596, 6.642825], - [100.085757, 6.464489], - [99.690691, 6.848213], - [99.519642, 7.343454], - [98.988253, 7.907993], - [98.503786, 8.382305], - [98.339662, 7.794512], - [98.150009, 8.350007], - [98.25915, 8.973923], - [98.553551, 9.93296], - [99.038121, 10.960546], - [99.587286, 11.892763], - [99.196354, 12.804748], - [99.212012, 13.269294], - [99.097755, 13.827503], - [98.430819, 14.622028], - [98.192074, 15.123703], - [98.537376, 15.308497], - [98.903348, 16.177824], - [98.493761, 16.837836], - [97.859123, 17.567946], - [97.375896, 18.445438], - [97.797783, 18.62708], - [98.253724, 19.708203], - [98.959676, 19.752981], - [99.543309, 20.186598], - [100.115988, 20.41785], - [100.548881, 20.109238], - [100.606294, 19.508344], - [101.282015, 19.462585], - [101.035931, 18.408928], - [101.059548, 17.512497], - [102.113592, 18.109102], - [102.413005, 17.932782], - [102.998706, 17.961695], - [103.200192, 18.309632], - [103.956477, 18.240954], - [104.716947, 17.428859], - [104.779321, 16.441865], - [105.589039, 15.570316], - [105.544338, 14.723934], - [105.218777, 14.273212], - [104.281418, 14.416743], - [102.988422, 14.225721], - [102.348099, 13.394247], - [102.584932, 12.186595] - ] - ] - }, - "id": "THA" - }, - { - "type": "Feature", - "properties": { "name": "Tajikistan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [71.014198, 40.244366], - [70.648019, 39.935754], - [69.55961, 40.103211], - [69.464887, 39.526683], - [70.549162, 39.604198], - [71.784694, 39.279463], - [73.675379, 39.431237], - [73.928852, 38.505815], - [74.257514, 38.606507], - [74.864816, 38.378846], - [74.829986, 37.990007], - [74.980002, 37.41999], - [73.948696, 37.421566], - [73.260056, 37.495257], - [72.63689, 37.047558], - [72.193041, 36.948288], - [71.844638, 36.738171], - [71.448693, 37.065645], - [71.541918, 37.905774], - [71.239404, 37.953265], - [71.348131, 38.258905], - [70.806821, 38.486282], - [70.376304, 38.138396], - [70.270574, 37.735165], - [70.116578, 37.588223], - [69.518785, 37.608997], - [69.196273, 37.151144], - [68.859446, 37.344336], - [68.135562, 37.023115], - [67.83, 37.144994], - [68.392033, 38.157025], - [68.176025, 38.901553], - [67.44222, 39.140144], - [67.701429, 39.580478], - [68.536416, 39.533453], - [69.011633, 40.086158], - [69.329495, 40.727824], - [70.666622, 40.960213], - [70.45816, 40.496495], - [70.601407, 40.218527], - [71.014198, 40.244366] - ] - ] - }, - "id": "TJK" - }, - { - "type": "Feature", - "properties": { "name": "Turkmenistan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [61.210817, 35.650072], - [61.123071, 36.491597], - [60.377638, 36.527383], - [59.234762, 37.412988], - [58.436154, 37.522309], - [57.330434, 38.029229], - [56.619366, 38.121394], - [56.180375, 37.935127], - [55.511578, 37.964117], - [54.800304, 37.392421], - [53.921598, 37.198918], - [53.735511, 37.906136], - [53.880929, 38.952093], - [53.101028, 39.290574], - [53.357808, 39.975286], - [52.693973, 40.033629], - [52.915251, 40.876523], - [53.858139, 40.631034], - [54.736845, 40.951015], - [54.008311, 41.551211], - [53.721713, 42.123191], - [52.91675, 41.868117], - [52.814689, 41.135371], - [52.50246, 41.783316], - [52.944293, 42.116034], - [54.079418, 42.324109], - [54.755345, 42.043971], - [55.455251, 41.259859], - [55.968191, 41.308642], - [57.096391, 41.32231], - [56.932215, 41.826026], - [57.78653, 42.170553], - [58.629011, 42.751551], - [59.976422, 42.223082], - [60.083341, 41.425146], - [60.465953, 41.220327], - [61.547179, 41.26637], - [61.882714, 41.084857], - [62.37426, 40.053886], - [63.518015, 39.363257], - [64.170223, 38.892407], - [65.215999, 38.402695], - [66.54615, 37.974685], - [66.518607, 37.362784], - [66.217385, 37.39379], - [65.745631, 37.661164], - [65.588948, 37.305217], - [64.746105, 37.111818], - [64.546479, 36.312073], - [63.982896, 36.007957], - [63.193538, 35.857166], - [62.984662, 35.404041], - [62.230651, 35.270664], - [61.210817, 35.650072] - ] - ] - }, - "id": "TKM" - }, - { - "type": "Feature", - "properties": { "name": "East Timor" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [124.968682, -8.89279], - [125.086246, -8.656887], - [125.947072, -8.432095], - [126.644704, -8.398247], - [126.957243, -8.273345], - [127.335928, -8.397317], - [126.967992, -8.668256], - [125.925885, -9.106007], - [125.08852, -9.393173], - [125.07002, -9.089987], - [124.968682, -8.89279] - ] - ] - }, - "id": "TLS" - }, - { - "type": "Feature", - "properties": { "name": "Trinidad and Tobago" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-61.68, 10.76], - [-61.105, 10.89], - [-60.895, 10.855], - [-60.935, 10.11], - [-61.77, 10], - [-61.95, 10.09], - [-61.66, 10.365], - [-61.68, 10.76] - ] - ] - }, - "id": "TTO" - }, - { - "type": "Feature", - "properties": { "name": "Tunisia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [9.48214, 30.307556], - [9.055603, 32.102692], - [8.439103, 32.506285], - [8.430473, 32.748337], - [7.612642, 33.344115], - [7.524482, 34.097376], - [8.140981, 34.655146], - [8.376368, 35.479876], - [8.217824, 36.433177], - [8.420964, 36.946427], - [9.509994, 37.349994], - [10.210002, 37.230002], - [10.18065, 36.724038], - [11.028867, 37.092103], - [11.100026, 36.899996], - [10.600005, 36.41], - [10.593287, 35.947444], - [10.939519, 35.698984], - [10.807847, 34.833507], - [10.149593, 34.330773], - [10.339659, 33.785742], - [10.856836, 33.76874], - [11.108501, 33.293343], - [11.488787, 33.136996], - [11.432253, 32.368903], - [10.94479, 32.081815], - [10.636901, 31.761421], - [9.950225, 31.37607], - [10.056575, 30.961831], - [9.970017, 30.539325], - [9.48214, 30.307556] - ] - ] - }, - "id": "TUN" - }, - { - "type": "Feature", - "properties": { "name": "Turkey" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [36.913127, 41.335358], - [38.347665, 40.948586], - [39.512607, 41.102763], - [40.373433, 41.013673], - [41.554084, 41.535656], - [42.619549, 41.583173], - [43.582746, 41.092143], - [43.752658, 40.740201], - [43.656436, 40.253564], - [44.400009, 40.005], - [44.79399, 39.713003], - [44.109225, 39.428136], - [44.421403, 38.281281], - [44.225756, 37.971584], - [44.772699, 37.170445], - [44.293452, 37.001514], - [43.942259, 37.256228], - [42.779126, 37.385264], - [42.349591, 37.229873], - [41.212089, 37.074352], - [40.673259, 37.091276], - [39.52258, 36.716054], - [38.699891, 36.712927], - [38.167727, 36.90121], - [37.066761, 36.623036], - [36.739494, 36.81752], - [36.685389, 36.259699], - [36.41755, 36.040617], - [36.149763, 35.821535], - [35.782085, 36.274995], - [36.160822, 36.650606], - [35.550936, 36.565443], - [34.714553, 36.795532], - [34.026895, 36.21996], - [32.509158, 36.107564], - [31.699595, 36.644275], - [30.621625, 36.677865], - [30.391096, 36.262981], - [29.699976, 36.144357], - [28.732903, 36.676831], - [27.641187, 36.658822], - [27.048768, 37.653361], - [26.318218, 38.208133], - [26.8047, 38.98576], - [26.170785, 39.463612], - [27.28002, 40.420014], - [28.819978, 40.460011], - [29.240004, 41.219991], - [31.145934, 41.087622], - [32.347979, 41.736264], - [33.513283, 42.01896], - [35.167704, 42.040225], - [36.913127, 41.335358] - ] - ], - [ - [ - [27.192377, 40.690566], - [26.358009, 40.151994], - [26.043351, 40.617754], - [26.056942, 40.824123], - [26.294602, 40.936261], - [26.604196, 41.562115], - [26.117042, 41.826905], - [27.135739, 42.141485], - [27.99672, 42.007359], - [28.115525, 41.622886], - [28.988443, 41.299934], - [28.806438, 41.054962], - [27.619017, 40.999823], - [27.192377, 40.690566] - ] - ] - ] - }, - "id": "TUR" - }, - { - "type": "Feature", - "properties": { "name": "Taiwan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [121.777818, 24.394274], - [121.175632, 22.790857], - [120.74708, 21.970571], - [120.220083, 22.814861], - [120.106189, 23.556263], - [120.69468, 24.538451], - [121.495044, 25.295459], - [121.951244, 24.997596], - [121.777818, 24.394274] - ] - ] - }, - "id": "TWN" - }, - { - "type": "Feature", - "properties": { "name": "United Republic of Tanzania" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [33.903711, -0.95], - [34.07262, -1.05982], - [37.69869, -3.09699], - [37.7669, -3.67712], - [39.20222, -4.67677], - [38.74054, -5.90895], - [38.79977, -6.47566], - [39.44, -6.84], - [39.47, -7.1], - [39.19469, -7.7039], - [39.25203, -8.00781], - [39.18652, -8.48551], - [39.53574, -9.11237], - [39.9496, -10.0984], - [40.31659, -10.3171], - [39.521, -10.89688], - [38.427557, -11.285202], - [37.82764, -11.26879], - [37.47129, -11.56876], - [36.775151, -11.594537], - [36.514082, -11.720938], - [35.312398, -11.439146], - [34.559989, -11.52002], - [34.28, -10.16], - [33.940838, -9.693674], - [33.73972, -9.41715], - [32.759375, -9.230599], - [32.191865, -8.930359], - [31.556348, -8.762049], - [31.157751, -8.594579], - [30.74, -8.34], - [30.2, -7.08], - [29.62, -6.52], - [29.419993, -5.939999], - [29.519987, -5.419979], - [29.339998, -4.499983], - [29.753512, -4.452389], - [30.11632, -4.09012], - [30.50554, -3.56858], - [30.75224, -3.35931], - [30.74301, -3.03431], - [30.52766, -2.80762], - [30.46967, -2.41383], - [30.758309, -2.28725], - [30.816135, -1.698914], - [30.419105, -1.134659], - [30.76986, -1.01455], - [31.86617, -1.02736], - [33.903711, -0.95] - ] - ] - }, - "id": "TZA" - }, - { - "type": "Feature", - "properties": { "name": "Uganda" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.86617, -1.02736], - [30.76986, -1.01455], - [30.419105, -1.134659], - [29.821519, -1.443322], - [29.579466, -1.341313], - [29.587838, -0.587406], - [29.8195, -0.2053], - [29.875779, 0.59738], - [30.086154, 1.062313], - [30.468508, 1.583805], - [30.85267, 1.849396], - [31.174149, 2.204465], - [30.77332, 2.33989], - [30.83385, 3.50917], - [31.24556, 3.7819], - [31.88145, 3.55827], - [32.68642, 3.79232], - [33.39, 3.79], - [34.005, 4.249885], - [34.47913, 3.5556], - [34.59607, 3.05374], - [35.03599, 1.90584], - [34.6721, 1.17694], - [34.18, 0.515], - [33.893569, 0.109814], - [33.903711, -0.95], - [31.86617, -1.02736] - ] - ] - }, - "id": "UGA" - }, - { - "type": "Feature", - "properties": { "name": "Ukraine" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.785998, 52.101678], - [32.159412, 52.061267], - [32.412058, 52.288695], - [32.715761, 52.238465], - [33.7527, 52.335075], - [34.391731, 51.768882], - [34.141978, 51.566413], - [34.224816, 51.255993], - [35.022183, 51.207572], - [35.377924, 50.773955], - [35.356116, 50.577197], - [36.626168, 50.225591], - [37.39346, 50.383953], - [38.010631, 49.915662], - [38.594988, 49.926462], - [40.069058, 49.601055], - [40.080789, 49.30743], - [39.674664, 48.783818], - [39.895632, 48.232405], - [39.738278, 47.898937], - [38.770585, 47.825608], - [38.255112, 47.5464], - [38.223538, 47.10219], - [37.425137, 47.022221], - [36.759855, 46.6987], - [35.823685, 46.645964], - [34.962342, 46.273197], - [35.020788, 45.651219], - [35.510009, 45.409993], - [36.529998, 45.46999], - [36.334713, 45.113216], - [35.239999, 44.939996], - [33.882511, 44.361479], - [33.326421, 44.564877], - [33.546924, 45.034771], - [32.454174, 45.327466], - [32.630804, 45.519186], - [33.588162, 45.851569], - [33.298567, 46.080598], - [31.74414, 46.333348], - [31.675307, 46.706245], - [30.748749, 46.5831], - [30.377609, 46.03241], - [29.603289, 45.293308], - [29.149725, 45.464925], - [28.679779, 45.304031], - [28.233554, 45.488283], - [28.485269, 45.596907], - [28.659987, 45.939987], - [28.933717, 46.25883], - [28.862972, 46.437889], - [29.072107, 46.517678], - [29.170654, 46.379262], - [29.759972, 46.349988], - [30.024659, 46.423937], - [29.83821, 46.525326], - [29.908852, 46.674361], - [29.559674, 46.928583], - [29.415135, 47.346645], - [29.050868, 47.510227], - [29.122698, 47.849095], - [28.670891, 48.118149], - [28.259547, 48.155562], - [27.522537, 48.467119], - [26.857824, 48.368211], - [26.619337, 48.220726], - [26.19745, 48.220881], - [25.945941, 47.987149], - [25.207743, 47.891056], - [24.866317, 47.737526], - [24.402056, 47.981878], - [23.760958, 47.985598], - [23.142236, 48.096341], - [22.710531, 47.882194], - [22.64082, 48.15024], - [22.085608, 48.422264], - [22.280842, 48.825392], - [22.558138, 49.085738], - [22.776419, 49.027395], - [22.51845, 49.476774], - [23.426508, 50.308506], - [23.922757, 50.424881], - [24.029986, 50.705407], - [23.527071, 51.578454], - [24.005078, 51.617444], - [24.553106, 51.888461], - [25.327788, 51.910656], - [26.337959, 51.832289], - [27.454066, 51.592303], - [28.241615, 51.572227], - [28.617613, 51.427714], - [28.992835, 51.602044], - [29.254938, 51.368234], - [30.157364, 51.416138], - [30.555117, 51.319503], - [30.619454, 51.822806], - [30.927549, 52.042353], - [31.785998, 52.101678] - ] - ] - }, - "id": "UKR" - }, - { - "type": "Feature", - "properties": { "name": "Uruguay" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-57.625133, -30.216295], - [-56.976026, -30.109686], - [-55.973245, -30.883076], - [-55.60151, -30.853879], - [-54.572452, -31.494511], - [-53.787952, -32.047243], - [-53.209589, -32.727666], - [-53.650544, -33.202004], - [-53.373662, -33.768378], - [-53.806426, -34.396815], - [-54.935866, -34.952647], - [-55.67409, -34.752659], - [-56.215297, -34.859836], - [-57.139685, -34.430456], - [-57.817861, -34.462547], - [-58.427074, -33.909454], - [-58.349611, -33.263189], - [-58.132648, -33.040567], - [-58.14244, -32.044504], - [-57.874937, -31.016556], - [-57.625133, -30.216295] - ] - ] - }, - "id": "URY" - }, - { - "type": "Feature", - "properties": { "name": "USA" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [-155.54211, 19.08348], - [-155.68817, 18.91619], - [-155.93665, 19.05939], - [-155.90806, 19.33888], - [-156.07347, 19.70294], - [-156.02368, 19.81422], - [-155.85008, 19.97729], - [-155.91907, 20.17395], - [-155.86108, 20.26721], - [-155.78505, 20.2487], - [-155.40214, 20.07975], - [-155.22452, 19.99302], - [-155.06226, 19.8591], - [-154.80741, 19.50871], - [-154.83147, 19.45328], - [-155.22217, 19.23972], - [-155.54211, 19.08348] - ] - ], - [ - [ - [-156.07926, 20.64397], - [-156.41445, 20.57241], - [-156.58673, 20.783], - [-156.70167, 20.8643], - [-156.71055, 20.92676], - [-156.61258, 21.01249], - [-156.25711, 20.91745], - [-155.99566, 20.76404], - [-156.07926, 20.64397] - ] - ], - [ - [ - [-156.75824, 21.17684], - [-156.78933, 21.06873], - [-157.32521, 21.09777], - [-157.25027, 21.21958], - [-156.75824, 21.17684] - ] - ], - [ - [ - [-157.65283, 21.32217], - [-157.70703, 21.26442], - [-157.7786, 21.27729], - [-158.12667, 21.31244], - [-158.2538, 21.53919], - [-158.29265, 21.57912], - [-158.0252, 21.71696], - [-157.94161, 21.65272], - [-157.65283, 21.32217] - ] - ], - [ - [ - [-159.34512, 21.982], - [-159.46372, 21.88299], - [-159.80051, 22.06533], - [-159.74877, 22.1382], - [-159.5962, 22.23618], - [-159.36569, 22.21494], - [-159.34512, 21.982] - ] - ], - [ - [ - [-94.81758, 49.38905], - [-94.64, 48.84], - [-94.32914, 48.67074], - [-93.63087, 48.60926], - [-92.61, 48.45], - [-91.64, 48.14], - [-90.83, 48.27], - [-89.6, 48.01], - [-89.272917, 48.019808], - [-88.378114, 48.302918], - [-87.439793, 47.94], - [-86.461991, 47.553338], - [-85.652363, 47.220219], - [-84.87608, 46.900083], - [-84.779238, 46.637102], - [-84.543749, 46.538684], - [-84.6049, 46.4396], - [-84.3367, 46.40877], - [-84.14212, 46.512226], - [-84.091851, 46.275419], - [-83.890765, 46.116927], - [-83.616131, 46.116927], - [-83.469551, 45.994686], - [-83.592851, 45.816894], - [-82.550925, 45.347517], - [-82.337763, 44.44], - [-82.137642, 43.571088], - [-82.43, 42.98], - [-82.9, 42.43], - [-83.12, 42.08], - [-83.142, 41.975681], - [-83.02981, 41.832796], - [-82.690089, 41.675105], - [-82.439278, 41.675105], - [-81.277747, 42.209026], - [-80.247448, 42.3662], - [-78.939362, 42.863611], - [-78.92, 42.965], - [-79.01, 43.27], - [-79.171674, 43.466339], - [-78.72028, 43.625089], - [-77.737885, 43.629056], - [-76.820034, 43.628784], - [-76.5, 44.018459], - [-76.375, 44.09631], - [-75.31821, 44.81645], - [-74.867, 45.00048], - [-73.34783, 45.00738], - [-71.50506, 45.0082], - [-71.405, 45.255], - [-71.08482, 45.30524], - [-70.66, 45.46], - [-70.305, 45.915], - [-69.99997, 46.69307], - [-69.237216, 47.447781], - [-68.905, 47.185], - [-68.23444, 47.35486], - [-67.79046, 47.06636], - [-67.79134, 45.70281], - [-67.13741, 45.13753], - [-66.96466, 44.8097], - [-68.03252, 44.3252], - [-69.06, 43.98], - [-70.11617, 43.68405], - [-70.645476, 43.090238], - [-70.81489, 42.8653], - [-70.825, 42.335], - [-70.495, 41.805], - [-70.08, 41.78], - [-70.185, 42.145], - [-69.88497, 41.92283], - [-69.96503, 41.63717], - [-70.64, 41.475], - [-71.12039, 41.49445], - [-71.86, 41.32], - [-72.295, 41.27], - [-72.87643, 41.22065], - [-73.71, 40.931102], - [-72.24126, 41.11948], - [-71.945, 40.93], - [-73.345, 40.63], - [-73.982, 40.628], - [-73.952325, 40.75075], - [-74.25671, 40.47351], - [-73.96244, 40.42763], - [-74.17838, 39.70926], - [-74.90604, 38.93954], - [-74.98041, 39.1964], - [-75.20002, 39.24845], - [-75.52805, 39.4985], - [-75.32, 38.96], - [-75.071835, 38.782032], - [-75.05673, 38.40412], - [-75.37747, 38.01551], - [-75.94023, 37.21689], - [-76.03127, 37.2566], - [-75.72205, 37.93705], - [-76.23287, 38.319215], - [-76.35, 39.15], - [-76.542725, 38.717615], - [-76.32933, 38.08326], - [-76.989998, 38.239992], - [-76.30162, 37.917945], - [-76.25874, 36.9664], - [-75.9718, 36.89726], - [-75.86804, 36.55125], - [-75.72749, 35.55074], - [-76.36318, 34.80854], - [-77.397635, 34.51201], - [-78.05496, 33.92547], - [-78.55435, 33.86133], - [-79.06067, 33.49395], - [-79.20357, 33.15839], - [-80.301325, 32.509355], - [-80.86498, 32.0333], - [-81.33629, 31.44049], - [-81.49042, 30.72999], - [-81.31371, 30.03552], - [-80.98, 29.18], - [-80.535585, 28.47213], - [-80.53, 28.04], - [-80.056539, 26.88], - [-80.088015, 26.205765], - [-80.13156, 25.816775], - [-80.38103, 25.20616], - [-80.68, 25.08], - [-81.17213, 25.20126], - [-81.33, 25.64], - [-81.71, 25.87], - [-82.24, 26.73], - [-82.70515, 27.49504], - [-82.85526, 27.88624], - [-82.65, 28.55], - [-82.93, 29.1], - [-83.70959, 29.93656], - [-84.1, 30.09], - [-85.10882, 29.63615], - [-85.28784, 29.68612], - [-85.7731, 30.15261], - [-86.4, 30.4], - [-87.53036, 30.27433], - [-88.41782, 30.3849], - [-89.18049, 30.31598], - [-89.593831, 30.159994], - [-89.413735, 29.89419], - [-89.43, 29.48864], - [-89.21767, 29.29108], - [-89.40823, 29.15961], - [-89.77928, 29.30714], - [-90.15463, 29.11743], - [-90.880225, 29.148535], - [-91.626785, 29.677], - [-92.49906, 29.5523], - [-93.22637, 29.78375], - [-93.84842, 29.71363], - [-94.69, 29.48], - [-95.60026, 28.73863], - [-96.59404, 28.30748], - [-97.14, 27.83], - [-97.37, 27.38], - [-97.38, 26.69], - [-97.33, 26.21], - [-97.14, 25.87], - [-97.53, 25.84], - [-98.24, 26.06], - [-99.02, 26.37], - [-99.3, 26.84], - [-99.52, 27.54], - [-100.11, 28.11], - [-100.45584, 28.69612], - [-100.9576, 29.38071], - [-101.6624, 29.7793], - [-102.48, 29.76], - [-103.11, 28.97], - [-103.94, 29.27], - [-104.45697, 29.57196], - [-104.70575, 30.12173], - [-105.03737, 30.64402], - [-105.63159, 31.08383], - [-106.1429, 31.39995], - [-106.50759, 31.75452], - [-108.24, 31.754854], - [-108.24194, 31.34222], - [-109.035, 31.34194], - [-111.02361, 31.33472], - [-113.30498, 32.03914], - [-114.815, 32.52528], - [-114.72139, 32.72083], - [-115.99135, 32.61239], - [-117.12776, 32.53534], - [-117.295938, 33.046225], - [-117.944, 33.621236], - [-118.410602, 33.740909], - [-118.519895, 34.027782], - [-119.081, 34.078], - [-119.438841, 34.348477], - [-120.36778, 34.44711], - [-120.62286, 34.60855], - [-120.74433, 35.15686], - [-121.71457, 36.16153], - [-122.54747, 37.55176], - [-122.51201, 37.78339], - [-122.95319, 38.11371], - [-123.7272, 38.95166], - [-123.86517, 39.76699], - [-124.39807, 40.3132], - [-124.17886, 41.14202], - [-124.2137, 41.99964], - [-124.53284, 42.76599], - [-124.14214, 43.70838], - [-124.020535, 44.615895], - [-123.89893, 45.52341], - [-124.079635, 46.86475], - [-124.39567, 47.72017], - [-124.68721, 48.184433], - [-124.566101, 48.379715], - [-123.12, 48.04], - [-122.58736, 47.096], - [-122.34, 47.36], - [-122.5, 48.18], - [-122.84, 49], - [-120, 49], - [-117.03121, 49], - [-116.04818, 49], - [-113, 49], - [-110.05, 49], - [-107.05, 49], - [-104.04826, 48.99986], - [-100.65, 49], - [-97.22872, 49.0007], - [-95.15907, 49], - [-95.15609, 49.38425], - [-94.81758, 49.38905] - ] - ], - [ - [ - [-153.006314, 57.115842], - [-154.00509, 56.734677], - [-154.516403, 56.992749], - [-154.670993, 57.461196], - [-153.76278, 57.816575], - [-153.228729, 57.968968], - [-152.564791, 57.901427], - [-152.141147, 57.591059], - [-153.006314, 57.115842] - ] - ], - [ - [ - [-165.579164, 59.909987], - [-166.19277, 59.754441], - [-166.848337, 59.941406], - [-167.455277, 60.213069], - [-166.467792, 60.38417], - [-165.67443, 60.293607], - [-165.579164, 59.909987] - ] - ], - [ - [ - [-171.731657, 63.782515], - [-171.114434, 63.592191], - [-170.491112, 63.694975], - [-169.682505, 63.431116], - [-168.689439, 63.297506], - [-168.771941, 63.188598], - [-169.52944, 62.976931], - [-170.290556, 63.194438], - [-170.671386, 63.375822], - [-171.553063, 63.317789], - [-171.791111, 63.405846], - [-171.731657, 63.782515] - ] - ], - [ - [ - [-155.06779, 71.147776], - [-154.344165, 70.696409], - [-153.900006, 70.889989], - [-152.210006, 70.829992], - [-152.270002, 70.600006], - [-150.739992, 70.430017], - [-149.720003, 70.53001], - [-147.613362, 70.214035], - [-145.68999, 70.12001], - [-144.920011, 69.989992], - [-143.589446, 70.152514], - [-142.07251, 69.851938], - [-140.985988, 69.711998], - [-140.985988, 69.711998], - [-140.992499, 66.000029], - [-140.99777, 60.306397], - [-140.012998, 60.276838], - [-139.039, 60.000007], - [-138.34089, 59.56211], - [-137.4525, 58.905], - [-136.47972, 59.46389], - [-135.47583, 59.78778], - [-134.945, 59.27056], - [-134.27111, 58.86111], - [-133.355549, 58.410285], - [-132.73042, 57.69289], - [-131.70781, 56.55212], - [-130.00778, 55.91583], - [-129.979994, 55.284998], - [-130.53611, 54.802753], - [-131.085818, 55.178906], - [-131.967211, 55.497776], - [-132.250011, 56.369996], - [-133.539181, 57.178887], - [-134.078063, 58.123068], - [-135.038211, 58.187715], - [-136.628062, 58.212209], - [-137.800006, 58.499995], - [-139.867787, 59.537762], - [-140.825274, 59.727517], - [-142.574444, 60.084447], - [-143.958881, 59.99918], - [-145.925557, 60.45861], - [-147.114374, 60.884656], - [-148.224306, 60.672989], - [-148.018066, 59.978329], - [-148.570823, 59.914173], - [-149.727858, 59.705658], - [-150.608243, 59.368211], - [-151.716393, 59.155821], - [-151.859433, 59.744984], - [-151.409719, 60.725803], - [-150.346941, 61.033588], - [-150.621111, 61.284425], - [-151.895839, 60.727198], - [-152.57833, 60.061657], - [-154.019172, 59.350279], - [-153.287511, 58.864728], - [-154.232492, 58.146374], - [-155.307491, 57.727795], - [-156.308335, 57.422774], - [-156.556097, 56.979985], - [-158.117217, 56.463608], - [-158.433321, 55.994154], - [-159.603327, 55.566686], - [-160.28972, 55.643581], - [-161.223048, 55.364735], - [-162.237766, 55.024187], - [-163.069447, 54.689737], - [-164.785569, 54.404173], - [-164.942226, 54.572225], - [-163.84834, 55.039431], - [-162.870001, 55.348043], - [-161.804175, 55.894986], - [-160.563605, 56.008055], - [-160.07056, 56.418055], - [-158.684443, 57.016675], - [-158.461097, 57.216921], - [-157.72277, 57.570001], - [-157.550274, 58.328326], - [-157.041675, 58.918885], - [-158.194731, 58.615802], - [-158.517218, 58.787781], - [-159.058606, 58.424186], - [-159.711667, 58.93139], - [-159.981289, 58.572549], - [-160.355271, 59.071123], - [-161.355003, 58.670838], - [-161.968894, 58.671665], - [-162.054987, 59.266925], - [-161.874171, 59.633621], - [-162.518059, 59.989724], - [-163.818341, 59.798056], - [-164.662218, 60.267484], - [-165.346388, 60.507496], - [-165.350832, 61.073895], - [-166.121379, 61.500019], - [-165.734452, 62.074997], - [-164.919179, 62.633076], - [-164.562508, 63.146378], - [-163.753332, 63.219449], - [-163.067224, 63.059459], - [-162.260555, 63.541936], - [-161.53445, 63.455817], - [-160.772507, 63.766108], - [-160.958335, 64.222799], - [-161.518068, 64.402788], - [-160.777778, 64.788604], - [-161.391926, 64.777235], - [-162.45305, 64.559445], - [-162.757786, 64.338605], - [-163.546394, 64.55916], - [-164.96083, 64.446945], - [-166.425288, 64.686672], - [-166.845004, 65.088896], - [-168.11056, 65.669997], - [-166.705271, 66.088318], - [-164.47471, 66.57666], - [-163.652512, 66.57666], - [-163.788602, 66.077207], - [-161.677774, 66.11612], - [-162.489715, 66.735565], - [-163.719717, 67.116395], - [-164.430991, 67.616338], - [-165.390287, 68.042772], - [-166.764441, 68.358877], - [-166.204707, 68.883031], - [-164.430811, 68.915535], - [-163.168614, 69.371115], - [-162.930566, 69.858062], - [-161.908897, 70.33333], - [-160.934797, 70.44769], - [-159.039176, 70.891642], - [-158.119723, 70.824721], - [-156.580825, 71.357764], - [-155.06779, 71.147776] - ] - ] - ] - }, - "id": "USA" - }, - { - "type": "Feature", - "properties": { "name": "Uzbekistan" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [66.518607, 37.362784], - [66.54615, 37.974685], - [65.215999, 38.402695], - [64.170223, 38.892407], - [63.518015, 39.363257], - [62.37426, 40.053886], - [61.882714, 41.084857], - [61.547179, 41.26637], - [60.465953, 41.220327], - [60.083341, 41.425146], - [59.976422, 42.223082], - [58.629011, 42.751551], - [57.78653, 42.170553], - [56.932215, 41.826026], - [57.096391, 41.32231], - [55.968191, 41.308642], - [55.928917, 44.995858], - [58.503127, 45.586804], - [58.689989, 45.500014], - [60.239972, 44.784037], - [61.05832, 44.405817], - [62.0133, 43.504477], - [63.185787, 43.650075], - [64.900824, 43.728081], - [66.098012, 42.99766], - [66.023392, 41.994646], - [66.510649, 41.987644], - [66.714047, 41.168444], - [67.985856, 41.135991], - [68.259896, 40.662325], - [68.632483, 40.668681], - [69.070027, 41.384244], - [70.388965, 42.081308], - [70.962315, 42.266154], - [71.259248, 42.167711], - [70.420022, 41.519998], - [71.157859, 41.143587], - [71.870115, 41.3929], - [73.055417, 40.866033], - [71.774875, 40.145844], - [71.014198, 40.244366], - [70.601407, 40.218527], - [70.45816, 40.496495], - [70.666622, 40.960213], - [69.329495, 40.727824], - [69.011633, 40.086158], - [68.536416, 39.533453], - [67.701429, 39.580478], - [67.44222, 39.140144], - [68.176025, 38.901553], - [68.392033, 38.157025], - [67.83, 37.144994], - [67.075782, 37.356144], - [66.518607, 37.362784] - ] - ] - }, - "id": "UZB" - }, - { - "type": "Feature", - "properties": { "name": "Venezuela" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [-71.331584, 11.776284], - [-71.360006, 11.539994], - [-71.94705, 11.423282], - [-71.620868, 10.96946], - [-71.633064, 10.446494], - [-72.074174, 9.865651], - [-71.695644, 9.072263], - [-71.264559, 9.137195], - [-71.039999, 9.859993], - [-71.350084, 10.211935], - [-71.400623, 10.968969], - [-70.155299, 11.375482], - [-70.293843, 11.846822], - [-69.943245, 12.162307], - [-69.5843, 11.459611], - [-68.882999, 11.443385], - [-68.233271, 10.885744], - [-68.194127, 10.554653], - [-67.296249, 10.545868], - [-66.227864, 10.648627], - [-65.655238, 10.200799], - [-64.890452, 10.077215], - [-64.329479, 10.389599], - [-64.318007, 10.641418], - [-63.079322, 10.701724], - [-61.880946, 10.715625], - [-62.730119, 10.420269], - [-62.388512, 9.948204], - [-61.588767, 9.873067], - [-60.830597, 9.38134], - [-60.671252, 8.580174], - [-60.150096, 8.602757], - [-59.758285, 8.367035], - [-60.550588, 7.779603], - [-60.637973, 7.415], - [-60.295668, 7.043911], - [-60.543999, 6.856584], - [-61.159336, 6.696077], - [-61.139415, 6.234297], - [-61.410303, 5.959068], - [-60.733574, 5.200277], - [-60.601179, 4.918098], - [-60.966893, 4.536468], - [-62.08543, 4.162124], - [-62.804533, 4.006965], - [-63.093198, 3.770571], - [-63.888343, 4.02053], - [-64.628659, 4.148481], - [-64.816064, 4.056445], - [-64.368494, 3.79721], - [-64.408828, 3.126786], - [-64.269999, 2.497006], - [-63.422867, 2.411068], - [-63.368788, 2.2009], - [-64.083085, 1.916369], - [-64.199306, 1.492855], - [-64.611012, 1.328731], - [-65.354713, 1.095282], - [-65.548267, 0.789254], - [-66.325765, 0.724452], - [-66.876326, 1.253361], - [-67.181294, 2.250638], - [-67.447092, 2.600281], - [-67.809938, 2.820655], - [-67.303173, 3.318454], - [-67.337564, 3.542342], - [-67.621836, 3.839482], - [-67.823012, 4.503937], - [-67.744697, 5.221129], - [-67.521532, 5.55687], - [-67.34144, 6.095468], - [-67.695087, 6.267318], - [-68.265052, 6.153268], - [-68.985319, 6.206805], - [-69.38948, 6.099861], - [-70.093313, 6.960376], - [-70.674234, 7.087785], - [-71.960176, 6.991615], - [-72.198352, 7.340431], - [-72.444487, 7.423785], - [-72.479679, 7.632506], - [-72.360901, 8.002638], - [-72.439862, 8.405275], - [-72.660495, 8.625288], - [-72.78873, 9.085027], - [-73.304952, 9.152], - [-73.027604, 9.73677], - [-72.905286, 10.450344], - [-72.614658, 10.821975], - [-72.227575, 11.108702], - [-71.973922, 11.608672], - [-71.331584, 11.776284] - ] - ] - }, - "id": "VEN" - }, - { - "type": "Feature", - "properties": { "name": "Vietnam" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [108.05018, 21.55238], - [106.715068, 20.696851], - [105.881682, 19.75205], - [105.662006, 19.058165], - [106.426817, 18.004121], - [107.361954, 16.697457], - [108.269495, 16.079742], - [108.877107, 15.276691], - [109.33527, 13.426028], - [109.200136, 11.666859], - [108.36613, 11.008321], - [107.220929, 10.364484], - [106.405113, 9.53084], - [105.158264, 8.59976], - [104.795185, 9.241038], - [105.076202, 9.918491], - [104.334335, 10.486544], - [105.199915, 10.88931], - [106.24967, 10.961812], - [105.810524, 11.567615], - [107.491403, 12.337206], - [107.614548, 13.535531], - [107.382727, 14.202441], - [107.564525, 15.202173], - [107.312706, 15.908538], - [106.556008, 16.604284], - [105.925762, 17.485315], - [105.094598, 18.666975], - [103.896532, 19.265181], - [104.183388, 19.624668], - [104.822574, 19.886642], - [104.435, 20.758733], - [103.203861, 20.766562], - [102.754896, 21.675137], - [102.170436, 22.464753], - [102.706992, 22.708795], - [103.504515, 22.703757], - [104.476858, 22.81915], - [105.329209, 23.352063], - [105.811247, 22.976892], - [106.725403, 22.794268], - [106.567273, 22.218205], - [107.04342, 21.811899], - [108.05018, 21.55238] - ] - ] - }, - "id": "VNM" - }, - { - "type": "Feature", - "properties": { "name": "Vanuatu" }, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [167.844877, -16.466333], - [167.515181, -16.59785], - [167.180008, -16.159995], - [167.216801, -15.891846], - [167.844877, -16.466333] - ] - ], - [ - [ - [167.107712, -14.93392], - [167.270028, -15.740021], - [167.001207, -15.614602], - [166.793158, -15.668811], - [166.649859, -15.392704], - [166.629137, -14.626497], - [167.107712, -14.93392] - ] - ] - ] - }, - "id": "VUT" - }, - { - "type": "Feature", - "properties": { "name": "West Bank" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [35.545665, 32.393992], - [35.545252, 31.782505], - [35.397561, 31.489086], - [34.927408, 31.353435], - [34.970507, 31.616778], - [35.225892, 31.754341], - [34.974641, 31.866582], - [35.18393, 32.532511], - [35.545665, 32.393992] - ] - ] - }, - "id": "PSE" - }, - { - "type": "Feature", - "properties": { "name": "Yemen" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [53.108573, 16.651051], - [52.385206, 16.382411], - [52.191729, 15.938433], - [52.168165, 15.59742], - [51.172515, 15.17525], - [49.574576, 14.708767], - [48.679231, 14.003202], - [48.238947, 13.94809], - [47.938914, 14.007233], - [47.354454, 13.59222], - [46.717076, 13.399699], - [45.877593, 13.347764], - [45.62505, 13.290946], - [45.406459, 13.026905], - [45.144356, 12.953938], - [44.989533, 12.699587], - [44.494576, 12.721653], - [44.175113, 12.58595], - [43.482959, 12.6368], - [43.222871, 13.22095], - [43.251448, 13.767584], - [43.087944, 14.06263], - [42.892245, 14.802249], - [42.604873, 15.213335], - [42.805015, 15.261963], - [42.702438, 15.718886], - [42.823671, 15.911742], - [42.779332, 16.347891], - [43.218375, 16.66689], - [43.115798, 17.08844], - [43.380794, 17.579987], - [43.791519, 17.319977], - [44.062613, 17.410359], - [45.216651, 17.433329], - [45.399999, 17.333335], - [46.366659, 17.233315], - [46.749994, 17.283338], - [47.000005, 16.949999], - [47.466695, 17.116682], - [48.183344, 18.166669], - [49.116672, 18.616668], - [52.00001, 19.000003], - [52.782184, 17.349742], - [53.108573, 16.651051] - ] - ] - }, - "id": "YEM" - }, - { - "type": "Feature", - "properties": { "name": "South Africa" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.521001, -29.257387], - [31.325561, -29.401978], - [30.901763, -29.909957], - [30.622813, -30.423776], - [30.055716, -31.140269], - [28.925553, -32.172041], - [28.219756, -32.771953], - [27.464608, -33.226964], - [26.419452, -33.61495], - [25.909664, -33.66704], - [25.780628, -33.944646], - [25.172862, -33.796851], - [24.677853, -33.987176], - [23.594043, -33.794474], - [22.988189, -33.916431], - [22.574157, -33.864083], - [21.542799, -34.258839], - [20.689053, -34.417175], - [20.071261, -34.795137], - [19.616405, -34.819166], - [19.193278, -34.462599], - [18.855315, -34.444306], - [18.424643, -33.997873], - [18.377411, -34.136521], - [18.244499, -33.867752], - [18.25008, -33.281431], - [17.92519, -32.611291], - [18.24791, -32.429131], - [18.221762, -31.661633], - [17.566918, -30.725721], - [17.064416, -29.878641], - [17.062918, -29.875954], - [16.344977, -28.576705], - [16.824017, -28.082162], - [17.218929, -28.355943], - [17.387497, -28.783514], - [17.836152, -28.856378], - [18.464899, -29.045462], - [19.002127, -28.972443], - [19.894734, -28.461105], - [19.895768, -24.76779], - [20.165726, -24.917962], - [20.758609, -25.868136], - [20.66647, -26.477453], - [20.889609, -26.828543], - [21.605896, -26.726534], - [22.105969, -26.280256], - [22.579532, -25.979448], - [22.824271, -25.500459], - [23.312097, -25.26869], - [23.73357, -25.390129], - [24.211267, -25.670216], - [25.025171, -25.71967], - [25.664666, -25.486816], - [25.765849, -25.174845], - [25.941652, -24.696373], - [26.485753, -24.616327], - [26.786407, -24.240691], - [27.11941, -23.574323], - [28.017236, -22.827754], - [29.432188, -22.091313], - [29.839037, -22.102216], - [30.322883, -22.271612], - [30.659865, -22.151567], - [31.191409, -22.25151], - [31.670398, -23.658969], - [31.930589, -24.369417], - [31.752408, -25.484284], - [31.837778, -25.843332], - [31.333158, -25.660191], - [31.04408, -25.731452], - [30.949667, -26.022649], - [30.676609, -26.398078], - [30.685962, -26.743845], - [31.282773, -27.285879], - [31.86806, -27.177927], - [32.071665, -26.73382], - [32.83012, -26.742192], - [32.580265, -27.470158], - [32.462133, -28.301011], - [32.203389, -28.752405], - [31.521001, -29.257387] - ], - [ - [28.978263, -28.955597], - [28.5417, -28.647502], - [28.074338, -28.851469], - [27.532511, -29.242711], - [26.999262, -29.875954], - [27.749397, -30.645106], - [28.107205, -30.545732], - [28.291069, -30.226217], - [28.8484, -30.070051], - [29.018415, -29.743766], - [29.325166, -29.257387], - [28.978263, -28.955597] - ] - ] - }, - "id": "ZAF" - }, - { - "type": "Feature", - "properties": { "name": "Zambia" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [32.759375, -9.230599], - [33.231388, -9.676722], - [33.485688, -10.525559], - [33.31531, -10.79655], - [33.114289, -11.607198], - [33.306422, -12.435778], - [32.991764, -12.783871], - [32.688165, -13.712858], - [33.214025, -13.97186], - [30.179481, -14.796099], - [30.274256, -15.507787], - [29.516834, -15.644678], - [28.947463, -16.043051], - [28.825869, -16.389749], - [28.467906, -16.4684], - [27.598243, -17.290831], - [27.044427, -17.938026], - [26.706773, -17.961229], - [26.381935, -17.846042], - [25.264226, -17.73654], - [25.084443, -17.661816], - [25.07695, -17.578823], - [24.682349, -17.353411], - [24.033862, -17.295843], - [23.215048, -17.523116], - [22.562478, -16.898451], - [21.887843, -16.08031], - [21.933886, -12.898437], - [24.016137, -12.911046], - [23.930922, -12.565848], - [24.079905, -12.191297], - [23.904154, -11.722282], - [24.017894, -11.237298], - [23.912215, -10.926826], - [24.257155, -10.951993], - [24.314516, -11.262826], - [24.78317, -11.238694], - [25.418118, -11.330936], - [25.75231, -11.784965], - [26.553088, -11.92444], - [27.16442, -11.608748], - [27.388799, -12.132747], - [28.155109, -12.272481], - [28.523562, -12.698604], - [28.934286, -13.248958], - [29.699614, -13.257227], - [29.616001, -12.178895], - [29.341548, -12.360744], - [28.642417, -11.971569], - [28.372253, -11.793647], - [28.49607, -10.789884], - [28.673682, -9.605925], - [28.449871, -9.164918], - [28.734867, -8.526559], - [29.002912, -8.407032], - [30.346086, -8.238257], - [30.740015, -8.340007], - [31.157751, -8.594579], - [31.556348, -8.762049], - [32.191865, -8.930359], - [32.759375, -9.230599] - ] - ] - }, - "id": "ZMB" - }, - { - "type": "Feature", - "properties": { "name": "Zimbabwe" }, - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [31.191409, -22.25151], - [30.659865, -22.151567], - [30.322883, -22.271612], - [29.839037, -22.102216], - [29.432188, -22.091313], - [28.794656, -21.639454], - [28.02137, -21.485975], - [27.727228, -20.851802], - [27.724747, -20.499059], - [27.296505, -20.39152], - [26.164791, -19.293086], - [25.850391, -18.714413], - [25.649163, -18.536026], - [25.264226, -17.73654], - [26.381935, -17.846042], - [26.706773, -17.961229], - [27.044427, -17.938026], - [27.598243, -17.290831], - [28.467906, -16.4684], - [28.825869, -16.389749], - [28.947463, -16.043051], - [29.516834, -15.644678], - [30.274256, -15.507787], - [30.338955, -15.880839], - [31.173064, -15.860944], - [31.636498, -16.07199], - [31.852041, -16.319417], - [32.328239, -16.392074], - [32.847639, -16.713398], - [32.849861, -17.979057], - [32.654886, -18.67209], - [32.611994, -19.419383], - [32.772708, -19.715592], - [32.659743, -20.30429], - [32.508693, -20.395292], - [32.244988, -21.116489], - [31.191409, -22.25151] - ] - ] - }, - "id": "ZWE" - } - ] -} diff --git a/explorer/src/lib/constants/addressCharPropertiesDefaults.js b/explorer/src/lib/constants/addressCharPropertiesDefaults.js deleted file mode 100644 index 2b7aec7cf3..0000000000 --- a/explorer/src/lib/constants/addressCharPropertiesDefaults.js +++ /dev/null @@ -1,6 +0,0 @@ -export const addressCharPropertiesDefaults = { - maxCharCount: 25, - maxScreenWidth: 1024, - minCharCount: 4, - minScreenWidth: 320, -}; diff --git a/explorer/src/lib/constants/index.js b/explorer/src/lib/constants/index.js deleted file mode 100644 index 2d5a75bd4a..0000000000 --- a/explorer/src/lib/constants/index.js +++ /dev/null @@ -1 +0,0 @@ -export { addressCharPropertiesDefaults } from "./addressCharPropertiesDefaults.js"; diff --git a/explorer/src/lib/containers/__tests__/StatisticsPanel.spec.js b/explorer/src/lib/containers/__tests__/StatisticsPanel.spec.js deleted file mode 100644 index 61d0aa2ac6..0000000000 --- a/explorer/src/lib/containers/__tests__/StatisticsPanel.spec.js +++ /dev/null @@ -1,76 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { get } from "svelte/store"; - -import { resolveAfter } from "$lib/dusk/promise"; -import { duskAPI } from "$lib/services"; -import { appStore } from "$lib/stores"; - -import { StatisticsPanel } from ".."; - -const marketDataSettleTime = vi.hoisted(() => { - vi.useFakeTimers(); - - return 100; -}); -vi.mock("$lib/services", async (importOriginal) => { - /** @type {import("$lib/services")} */ - const original = await importOriginal(); - const { apiMarketData, apiStats, nodeLocationsCount } = - await import("$lib/mock-data"); - const { current_price: currentPrice, market_cap: marketCap } = - apiMarketData.market_data; - - return { - ...original, - duskAPI: { - ...original.duskAPI, - getMarketData: () => - resolveAfter(marketDataSettleTime, { currentPrice, marketCap }), - getNodeLocations: vi.fn().mockResolvedValue(nodeLocationsCount), - getStats: vi.fn().mockResolvedValue(apiStats), - }, - }; -}); - -describe("StatisticsPanel", () => { - const { statsFetchInterval } = get(appStore); - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - vi.doUnmock("$lib/services"); - }); - - it("should render the StatisticsPanel, query for the necessary info, start polling for stats and stop the polling when unmounted", async () => { - const { container, unmount } = render(StatisticsPanel); - - expect(container.firstChild).toMatchSnapshot(); - expect(duskAPI.getStats).toHaveBeenCalledTimes(1); - expect(duskAPI.getStats).toHaveBeenNthCalledWith(1); - - await vi.advanceTimersByTimeAsync(marketDataSettleTime); - - // snapshot with received data from APIs - expect(container.firstChild).toMatchSnapshot(); - - await vi.advanceTimersByTimeAsync( - statsFetchInterval - marketDataSettleTime - ); - - expect(duskAPI.getStats).toHaveBeenCalledTimes(2); - expect(duskAPI.getStats).toHaveBeenNthCalledWith(2); - - await vi.advanceTimersByTimeAsync(statsFetchInterval); - - expect(duskAPI.getStats).toHaveBeenCalledTimes(3); - expect(duskAPI.getStats).toHaveBeenNthCalledWith(3); - - unmount(); - - await vi.advanceTimersByTimeAsync(statsFetchInterval * 10); - - expect(duskAPI.getStats).toHaveBeenCalledTimes(3); - }); -}); diff --git a/explorer/src/lib/containers/__tests__/__snapshots__/StatisticsPanel.spec.js.snap b/explorer/src/lib/containers/__tests__/__snapshots__/StatisticsPanel.spec.js.snap deleted file mode 100644 index ee09547fef..0000000000 --- a/explorer/src/lib/containers/__tests__/__snapshots__/StatisticsPanel.spec.js.snap +++ /dev/null @@ -1,764 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`StatisticsPanel > should render the StatisticsPanel, query for the necessary info, start polling for stats and stop the polling when unmounted 1`] = ` -
-
-
-
-
- - - - - -
- - - - - - - - - -
-
- - - Dusk Price - -
-
-
- - - - - -
- - - - - - - - - -
-
- - - Total Market Cap - -
- -
-
-
-
- - - - - -
- - - - - - - - -
-
- - - Current Stake - -
-
-
- - - - - -
- - - - - - - - -
-
- - - Pending Stake - -
- -
-
-
-
- - - - - -
- - - - - - - - -
-
- - - Last Block - -
-
-
- - - - - -
- - - - - - - - -
-
- - - Total Transactions - -
- -
-
-
-
- - - - - -
- - - - - - - - -
-
- - - Active Provisioners - -
-
-
- - - - - -
- - - - - - - - -
-
- - - Pending Provisioners - -
- -
-
-
-
- - - - - -
- 15 - - - -
-
- - - Largest Node Cluster - -
-
-
- - - - - -
- North Bergen, US - - - -
-
- - - Largest Cluster Location - -
- -
-
-
-`; - -exports[`StatisticsPanel > should render the StatisticsPanel, query for the necessary info, start polling for stats and stop the polling when unmounted 2`] = ` -
-
-
-
-
- - - - - -
- 0.368 - - - - -
-
- - - Dusk Price - -
-
-
- - - - - -
- 168.00M - - - - -
-
- - - Total Market Cap - -
- -
-
-
-
- - - - - -
- 58.23M - - - -
-
- - - Current Stake - -
-
-
- - - - - -
- 2.57M - - - -
-
- - - Pending Stake - -
- -
-
-
-
- - - - - -
- 487,596 - - - -
-
- - - Last Block - -
-
-
- - - - - -
- 16,363 - - - -
-
- - - Total Transactions - -
- -
-
-
-
- - - - - -
- 945 - - - -
-
- - - Active Provisioners - -
-
-
- - - - - -
- 34 - - - -
-
- - - Pending Provisioners - -
- -
-
-
-
- - - - - -
- 15 - - - -
-
- - - Largest Node Cluster - -
-
-
- - - - - -
- North Bergen, US - - - -
-
- - - Largest Cluster Location - -
- -
-
-
-`; diff --git a/explorer/src/lib/containers/index.js b/explorer/src/lib/containers/index.js deleted file mode 100644 index 0293d57451..0000000000 --- a/explorer/src/lib/containers/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as SearchField } from "./search-field/SearchField.svelte"; -export { default as StatisticsPanel } from "./statistics-panel/StatisticsPanel.svelte"; diff --git a/explorer/src/lib/containers/search-field/SearchField.svelte b/explorer/src/lib/containers/search-field/SearchField.svelte deleted file mode 100644 index 4f743d55ba..0000000000 --- a/explorer/src/lib/containers/search-field/SearchField.svelte +++ /dev/null @@ -1,74 +0,0 @@ - - -
- - diff --git a/explorer/src/lib/containers/statistics-panel/StatisticsPanel.css b/explorer/src/lib/containers/statistics-panel/StatisticsPanel.css deleted file mode 100644 index c5a9ca32db..0000000000 --- a/explorer/src/lib/containers/statistics-panel/StatisticsPanel.css +++ /dev/null @@ -1,122 +0,0 @@ -.statistics-panel { - display: flex; - padding: 1rem 1.375rem; - flex-direction: column; - row-gap: 0.75rem; - border-radius: 1.5rem; - background-color: var(--surface-color); - width: 100%; - - --desktop-gap: 1.25rem; - --mobile-gap: 1.5rem; -} - -.statistics-panel__statistics { - display: grid; - grid-template-columns: 1fr; - gap: var(--mobile-gap); - overflow: hidden; - width: 100%; -} - -.statistics-panel__statistics-column { - display: flex; - flex-direction: column; - gap: var(--mobile-gap); -} - -.statistics-panel__statistics-item { - display: flex; - flex-direction: column; - row-gap: 0.3125rem; - position: relative; - justify-content: center; -} - -.statistics-panel__statistics-item[data-tooltip-id] { - cursor: help; -} - -.approximate::before { - display: inline; - content: "~"; -} - -.statistics-panel__statistics-item::after, -.statistics-panel__statistics-item::before { - content: ""; - position: absolute; - background-color: var(--taupe-grey); - z-index: 1; -} - -.statistics-panel__statistics-item::after { - inline-size: 100vw; - block-size: 1px; - inset-inline-start: 0; - inset-block-start: calc(calc(var(--mobile-gap) / 2) * -1); -} - -.statistics-panel__statistics-item::before { - inline-size: 1px; - block-size: 100%; - inset-block-start: 0; - inset-inline-start: calc(calc(var(--desktop-gap) / 2) * -1); -} - -.statistics-panel__statistics-item-value-container { - display: flex; - flex-direction: row; - column-gap: 0.3125rem; - font-weight: 500; - font-size: 1rem; -} - -.statistics-panel__statistics-item-title { - text-transform: uppercase; - font-size: 0.75rem; -} - -@media (min-width: 992px) { - .statistics-panel { - flex-direction: row; - } - - .statistics-panel__statistics { - grid-template-columns: repeat(2, 1fr); - gap: var(--desktop-gap); - } - - .statistics-panel__statistics-column { - gap: var(--desktop-gap); - } - - .statistics-panel__statistics-column:nth-child(5) { - display: contents; - } - - .statistics-panel__statistics-item-value { - display: flex; - align-items: center; - gap: 0.625rem; - } - - .statistics-panel__statistics-item-value-container { - font-size: 1.125rem; - } - - .statistics-panel__statistics-item-title { - font-size: 0.875rem; - } -} - -@media (min-width: 1330px) { - .statistics-panel__statistics { - grid-template-columns: repeat(5, 1fr); - align-items: center; - } - - .statistics-panel__statistics-column:nth-child(5) { - display: flex; - } -} diff --git a/explorer/src/lib/containers/statistics-panel/StatisticsPanel.svelte b/explorer/src/lib/containers/statistics-panel/StatisticsPanel.svelte deleted file mode 100644 index 6d3dfa70e2..0000000000 --- a/explorer/src/lib/containers/statistics-panel/StatisticsPanel.svelte +++ /dev/null @@ -1,219 +0,0 @@ - - - - -
-
- {#each statistics as statistic, index (index)} -
- {#each statistic as item (`${item.title}`)} -
-
- -
- - {#if item.compact} - {formatter(item.data)} - {:else if item.compact === null} - {item.data} - {:else} - {valueFormatter(item.data)} - {/if} - - {#if item.canBeStale} - - {/if} -
-
- {item.title} -
- {/each} -
- {/each} -
-
diff --git a/explorer/src/lib/contexts/contexts.js b/explorer/src/lib/contexts/contexts.js deleted file mode 100644 index 53a16f79d2..0000000000 --- a/explorer/src/lib/contexts/contexts.js +++ /dev/null @@ -1,5 +0,0 @@ -export default { - LIST_ITEM: { - DETAIL_LIST: "list-item:detail-list", - }, -}; diff --git a/explorer/src/lib/contexts/index.js b/explorer/src/lib/contexts/index.js deleted file mode 100644 index d5e21eb59b..0000000000 --- a/explorer/src/lib/contexts/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import contexts from "./contexts"; -export default contexts; diff --git a/explorer/src/lib/dusk/array/__tests__/arraySum.spec.js b/explorer/src/lib/dusk/array/__tests__/arraySum.spec.js deleted file mode 100644 index 13c715306a..0000000000 --- a/explorer/src/lib/dusk/array/__tests__/arraySum.spec.js +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { arraySum } from ".."; - -describe("arraySum", () => { - const testArr = [-0, 1, 2, 3, 4, 5]; - - it("should sum the values contained in an array of numbers", () => { - expect(arraySum(testArr)).toBe(15); - }); - - it("should throw an exception if the received array is empty", () => { - expect(() => arraySum([])).toThrow(TypeError); - }); -}); diff --git a/explorer/src/lib/dusk/array/__tests__/arraySumByKey.spec.js b/explorer/src/lib/dusk/array/__tests__/arraySumByKey.spec.js deleted file mode 100644 index fc80c995a8..0000000000 --- a/explorer/src/lib/dusk/array/__tests__/arraySumByKey.spec.js +++ /dev/null @@ -1,19 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { arraySumByKey } from ".."; - -describe("arraySumByKey", () => { - const testArr = [ - { uid: "id1", value: 5 }, - { uid: "id2", value: 3 }, - { uid: "id3", value: 6 }, - ]; - - it("should sum the numeric values contained in a key in an array of objects", () => { - expect(arraySumByKey("value")(testArr)).toBe(14); - }); - - it("should throw an exception if the build function receives an empty array", () => { - expect(() => arraySumByKey("value")([])).toThrow(TypeError); - }); -}); diff --git a/explorer/src/lib/dusk/array/arraySum.js b/explorer/src/lib/dusk/array/arraySum.js deleted file mode 100644 index e65cd95710..0000000000 --- a/explorer/src/lib/dusk/array/arraySum.js +++ /dev/null @@ -1,14 +0,0 @@ -import { reduceWith, sum } from "lamb"; - -/** - * Sums the values in the given array. - * - * @example - * arraySum([1, 2, 3, 4, 5]) // => 15 - * - * @throws {TypeError} If the received array is empty. - * @type {(source: number[]) => number} - */ -const arraySum = reduceWith(sum); - -export default arraySum; diff --git a/explorer/src/lib/dusk/array/arraySumByKey.js b/explorer/src/lib/dusk/array/arraySumByKey.js deleted file mode 100644 index 0a7b9de6ea..0000000000 --- a/explorer/src/lib/dusk/array/arraySumByKey.js +++ /dev/null @@ -1,25 +0,0 @@ -import { compose, pluck } from "lamb"; - -import { arraySum } from "."; - -/** - * Builds a function that sums the values in the given key in an array of objects. - * The built function will throw a `TypeError` if the received array is empty. - * - * @example - * const scores = [ - * { score: 7, user: "John" }, - * { score: 9, user: "Jane" }, - * { score: 5, user: "Mario" } - * ]; - * const sumScores = arraySumByKey("score"); - * - * sumScores(scores) // => 21 - * - * @template {string} K - * @param {K} key - * @returns {(source: ArrayLike<{ [P in K]: number } & Record>) => number} - */ -const arraySumByKey = (key) => compose(arraySum, pluck(key)); - -export default arraySumByKey; diff --git a/explorer/src/lib/dusk/array/index.js b/explorer/src/lib/dusk/array/index.js deleted file mode 100644 index 34fec79caf..0000000000 --- a/explorer/src/lib/dusk/array/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as arraySum } from "./arraySum"; -export { default as arraySumByKey } from "./arraySumByKey"; diff --git a/explorer/src/lib/dusk/components/__tests__/Anchor.spec.js b/explorer/src/lib/dusk/components/__tests__/Anchor.spec.js deleted file mode 100644 index a049bb1217..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Anchor.spec.js +++ /dev/null @@ -1,39 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup } from "@testing-library/svelte"; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -import { Anchor } from ".."; - -describe("Anchor", () => { - const baseProps = { - href: "https://example.com", - }; - - const baseOptions = { - props: baseProps, - }; - - afterEach(cleanup); - - it("should render the Anchor component", () => { - const { container } = renderWithSimpleContent(Anchor, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - href: "https://dusk.network", - title: "Some title", - }; - const { container } = renderWithSimpleContent(Anchor, { - ...baseOptions, - props, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/AnchorButton.spec.js b/explorer/src/lib/dusk/components/__tests__/AnchorButton.spec.js deleted file mode 100644 index 092f84d019..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/AnchorButton.spec.js +++ /dev/null @@ -1,87 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { mdiFolderOutline } from "@mdi/js"; - -import { AnchorButton } from ".."; - -describe("AnchorButton", () => { - const baseProps = { - href: "/some-url", - text: "some text", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - const iconPositions = /** @type {const} */ (["after", "before", undefined]); - - afterEach(cleanup); - - it("should render the AnchorButton component", () => { - const { container } = render(AnchorButton, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should add a disabled class if the related property is `true`", () => { - const props = { - ...baseProps, - disabled: true, - }; - const { container } = render(AnchorButton, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - }; - const { container } = render(AnchorButton, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render a AnchorButton without a text", () => { - const props = { - ...baseProps, - text: "", - }; - const { container } = render(AnchorButton, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should be able to render a AnchorButton with an icon and text", () => { - iconPositions.forEach((position) => { - const props = { - ...baseProps, - icon: { - path: mdiFolderOutline, - position, - }, - }; - const { container } = render(AnchorButton, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - }); - - it("should be able to render a AnchorButton with an icon only", () => { - iconPositions.forEach((position) => { - const props = { - ...baseProps, - icon: { - path: mdiFolderOutline, - position, - }, - text: "", - }; - const { container } = render(AnchorButton, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Badge.spec.js b/explorer/src/lib/dusk/components/__tests__/Badge.spec.js deleted file mode 100644 index 6d7f43e225..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Badge.spec.js +++ /dev/null @@ -1,57 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { Badge } from ".."; - -describe("Badge", () => { - const baseProps = { - text: "Badge", - }; - - afterEach(cleanup); - - it('should render the Badge component using the type "neutral" as a default', () => { - const { container } = render(Badge, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it('should render the Badge component using the type "warning" variant', () => { - const { container } = render(Badge, { ...baseProps, variant: "warning" }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it('should render the Badge component using the type "error" variant', () => { - const { container } = render(Badge, { ...baseProps, variant: "error" }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it('should render the Badge component using the type "success" variant', () => { - const { container } = render(Badge, { ...baseProps, variant: "success" }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names and attributes to the root element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - }; - const { container } = render(Badge, { ...props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should only display a string 10 characters long", () => { - const props = { - ...baseProps, - maxlength: 10, - text: "ABCDEFGHIJK", - }; - const { container } = render(Badge, { ...props }); - expect(container.firstChild?.textContent?.length).toBe(10); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Button.spec.js b/explorer/src/lib/dusk/components/__tests__/Button.spec.js deleted file mode 100644 index e236d59dfd..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Button.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { mdiFolderOutline } from "@mdi/js"; - -import { Button } from ".."; - -describe("Button", () => { - const baseProps = { - text: "some text", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it('should render the Button component using the type "button" as a default', () => { - const { container } = render(Button, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render a button of the desired type", () => { - ["button", "reset", "submit", "toggle"].forEach((type) => { - const props = { ...baseProps, type }; - const { container } = render(Button, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - }; - const { container } = render(Button, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render a button without a text", () => { - const props = { - ...baseProps, - text: "", - }; - const { container } = render(Button, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should be able to render a button with an icon and text", () => { - ["after", "before"].forEach((position) => { - const props = { - ...baseProps, - icon: { - path: mdiFolderOutline, - position, - }, - }; - const { container } = render(Button, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - }); - - it("should be able to render a button with an icon only", () => { - ["after", "before"].forEach((position) => { - const props = { - ...baseProps, - icon: { - path: mdiFolderOutline, - position, - }, - text: "", - }; - const { container } = render(Button, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Card.spec.js b/explorer/src/lib/dusk/components/__tests__/Card.spec.js deleted file mode 100644 index 8f1f3df495..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Card.spec.js +++ /dev/null @@ -1,16 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup } from "@testing-library/svelte"; - -import { renderWithSimpleContent } from "$lib/dusk/test-helpers"; - -import { Card } from ".."; - -describe("Card", () => { - afterEach(cleanup); - - it("renders the Card component", () => { - const { container } = renderWithSimpleContent(Card, {}); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Icon.spec.js b/explorer/src/lib/dusk/components/__tests__/Icon.spec.js deleted file mode 100644 index ef0b5cb535..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Icon.spec.js +++ /dev/null @@ -1,64 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { Icon } from ".."; - -describe("Icon", () => { - const baseProps = { - path: "M3,3H21V21H3V3M5,5V19H19V5H5Z", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the Icon component", () => { - const { container } = render(Icon, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept a custom role for the SVG component", () => { - const props = { - ...baseProps, - role: "presentation", - }; - const { container } = render(Icon, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the icon inside a `g` element if it's part of a stack", () => { - const props = { - ...baseProps, - isInStack: true, - }; - const { container } = render(Icon, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names and attributes to the rendered element", async () => { - const props = { - ...baseProps, - className: "foo bar", - "data-baz": "baz", - }; - const { container, rerender } = render(Icon, { ...baseOptions, props }); - const icon = container.firstChild; - - expect(icon).toHaveClass("foo bar"); - expect(icon).toHaveAttribute("data-baz", "baz"); - expect(icon).toMatchSnapshot(); - - await rerender({ ...props, isInStack: true }); - - const icon2 = container.firstChild; - - expect(icon2).toHaveClass("foo bar"); - expect(icon2).toHaveAttribute("data-baz", "baz"); - expect(icon2).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/NavList.spec.js b/explorer/src/lib/dusk/components/__tests__/NavList.spec.js deleted file mode 100644 index 012d720cf1..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/NavList.spec.js +++ /dev/null @@ -1,50 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { NavList } from ".."; - -describe("NavList", () => { - const baseProps = { - navigation: [ - { - link: "https://dusk.network", - title: "Dusk", - }, - { - link: "https://explorer.dusk.network", - title: "Explorer", - }, - ], - }; - - afterEach(cleanup); - - it("renders the NavList component", () => { - const { container } = render(NavList, baseProps); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the Nav List with the correct information", () => { - const { container } = render(NavList, baseProps); - - baseProps.navigation.forEach((item, index) => { - expect( - container.getElementsByClassName("dusk-nav-list__link")[index].innerHTML - ).toBe(item.title); - - expect( - container.getElementsByClassName("dusk-nav-list__link")[index] - ).toHaveAttribute("href", item.link); - }); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - }; - const { container } = render(NavList, props); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/ProgressBar.spec.js b/explorer/src/lib/dusk/components/__tests__/ProgressBar.spec.js deleted file mode 100644 index 2f223988b2..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/ProgressBar.spec.js +++ /dev/null @@ -1,51 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import { ProgressBar } from ".."; - -describe("ProgressBar", () => { - const baseProps = { - ariaLabel: "Loading", - currentPercentage: 0, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("renders the `ProgressBar` component with no current percentage set", () => { - const { container } = render(ProgressBar, { - ...baseOptions, - props: { ariaLabel: baseProps.ariaLabel }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("renders the `ProgressBar` component with current percentage set as zero", () => { - const { container } = render(ProgressBar, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("re-renders the `ProgressBar` component when the current percentage property changes", async () => { - const { container, rerender } = render(ProgressBar, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - - await rerender({ currentPercentage: 50 }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names to the rendered element", () => { - const { container } = render(ProgressBar, { - ...baseOptions, - props: { ...baseProps, className: "foo bar" }, - }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/RelativeTime.spec.js b/explorer/src/lib/dusk/components/__tests__/RelativeTime.spec.js deleted file mode 100644 index 798cfbc984..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/RelativeTime.spec.js +++ /dev/null @@ -1,94 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import RelativeTimeCustomContent from "./test-components/RelativeTimeCustomContent.svelte"; - -import { RelativeTime } from ".."; - -describe("RelativeTime", () => { - vi.useFakeTimers(); - vi.setSystemTime(new Date(2024, 4, 20, 15, 25, 30)); - - const baseProps = { - date: new Date(2024, 4, 20, 15, 25, 10), - }; - - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should render the relative time of the given date and should not updated it by default", async () => { - const { container } = render(RelativeTime, baseOptions); - const textContent = container.firstChild?.textContent; - - expect(container.firstChild).toMatchSnapshot(); - expect(textContent).toMatchInlineSnapshot(`"20 seconds ago"`); - - await vi.advanceTimersByTimeAsync(10000); - - expect(container.firstChild?.textContent).toBe(textContent); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - "data-baz": "baz", - }; - const { container } = render(RelativeTime, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should update the relative time every second if the `autoRefresh` property is set to `true`", async () => { - const props = { ...baseProps, autoRefresh: true }; - const { container } = render(RelativeTime, { ...baseOptions, props }); - - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"30 seconds ago"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"31 seconds ago"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"32 seconds ago"` - ); - }); - - it("should allow to put custom content in the default slot", async () => { - const { container } = render(RelativeTimeCustomContent, { - ...baseOptions, - props: { date: baseProps.date }, - }); - - expect(container.firstChild).toMatchSnapshot(); - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"The relative time now is 32 seconds ago"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"The relative time now is 33 seconds ago"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.firstChild?.textContent).toMatchInlineSnapshot( - `"The relative time now is 34 seconds ago"` - ); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Rerender.spec.js b/explorer/src/lib/dusk/components/__tests__/Rerender.spec.js deleted file mode 100644 index e6bae9a2b2..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Rerender.spec.js +++ /dev/null @@ -1,176 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; - -import RerenderCounter from "./test-components/RerenderCounter.svelte"; -import RerenderGenerateValue1 from "./test-components/RerenderGenerateValue1.svelte"; -import RerenderGenerateValue2 from "./test-components/RerenderGenerateValue2.svelte"; - -describe("renderWithSimpleContent", () => { - vi.useFakeTimers(); - - let domMutations = 0; - - const incrementMutations = () => domMutations++; - const mutationObserver = new MutationObserver(incrementMutations); - - /** - * @param {Parameters[0]} component - * @param {Parameters[1]} options - */ - const renderAndObserveContainer = (component, options) => { - const renderResult = render(component, options); - - mutationObserver.observe(renderResult.container, { - childList: true, - subtree: true, - }); - - return renderResult; - }; - - const baseOptions = { - target: document.body, - }; - - afterEach(() => { - mutationObserver.disconnect(); - domMutations = 0; - cleanup(); - }); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should render its content and re-render it every second by default", async () => { - const { container } = renderAndObserveContainer( - RerenderCounter, - baseOptions - ); - - expect(container.innerHTML).toMatchInlineSnapshot(`"0"`); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toMatchInlineSnapshot(`"1"`); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toMatchInlineSnapshot(`"2"`); - - expect(domMutations).toBe(2); - }); - - it("should accept a custom interval for re-renders", async () => { - const props = { interval: 2000 }; - const { container } = renderAndObserveContainer(RerenderCounter, { - ...baseOptions, - props, - }); - - expect(container.innerHTML).toMatchInlineSnapshot(`"0"`); - - await vi.advanceTimersByTimeAsync(props.interval / 2); - - expect(container.innerHTML).toMatchInlineSnapshot(`"0"`); - - await vi.advanceTimersByTimeAsync(props.interval / 2); - - expect(container.innerHTML).toMatchInlineSnapshot(`"1"`); - - await vi.advanceTimersByTimeAsync(props.interval / 2); - - expect(container.innerHTML).toMatchInlineSnapshot(`"1"`); - - await vi.advanceTimersByTimeAsync(props.interval / 2); - - expect(container.innerHTML).toMatchInlineSnapshot(`"2"`); - expect(domMutations).toBe(2); - }); - - it("should accept a custom `generateValue` function and use its result both as re-render key and as the default slot content", async () => { - const values = [1, 2]; - const { container } = renderAndObserveContainer(RerenderGenerateValue1, { - ...baseOptions, - props: { values }, - }); - - expect(container.innerHTML).toBe("1"); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("2"); - expect(domMutations).toBe(1); - }); - - it("should not trigger a re-render if the generated value is equal to the previous one by the `SameValueZero` comparison", async () => { - const values = [1, 2, 0, -0, NaN, NaN, 3, 3, 4]; - const { container } = renderAndObserveContainer(RerenderGenerateValue1, { - ...baseOptions, - props: { values }, - }); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("2"); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("0"); - expect(domMutations).toBe(2); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("0"); - expect(domMutations).toBe(2); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("NaN"); - expect(domMutations).toBe(3); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("NaN"); - expect(domMutations).toBe(3); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("3"); - expect(domMutations).toBe(4); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("3"); - expect(domMutations).toBe(4); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toBe("4"); - expect(domMutations).toBe(5); - }); - - it("should expose the custom generated value and let it be used as part of custom content", async () => { - const { container } = renderAndObserveContainer( - RerenderGenerateValue2, - baseOptions - ); - - expect(container.innerHTML).toMatchInlineSnapshot( - `"now the value is: 0"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toMatchInlineSnapshot( - `"now the value is: 1"` - ); - - await vi.advanceTimersByTimeAsync(1000); - - expect(container.innerHTML).toMatchInlineSnapshot( - `"now the value is: 2"` - ); - expect(domMutations).toBe(2); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Select.spec.js b/explorer/src/lib/dusk/components/__tests__/Select.spec.js deleted file mode 100644 index e33a87e4cb..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Select.spec.js +++ /dev/null @@ -1,146 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render, screen } from "@testing-library/svelte"; - -import { Select } from "../"; - -const stringOptions = ["one", "two", "three", "four"]; - -/** @type {SelectOption[]} */ -const objectOptions = [ - { label: "one", value: "1" }, - { label: "two", value: "2" }, - { disabled: true, label: "three", value: "3" }, - { label: "four", value: "4" }, -]; - -/** @type {GroupedSelectOptions} */ -const groupedOptions = { - "Group one": [ - { label: "one", value: "1" }, - { label: "two", value: "2" }, - { disabled: true, label: "three", value: "3" }, - ], - "Group two": [ - { label: "four", value: "4" }, - { label: "five", value: "5" }, - ], -}; - -/** @type {GroupedSelectOptions} */ -const groupedOptionsStrings = { - "Group one": ["one", "two", "three", "four"], - "Group two": ["five", "six", "seven"], -}; - -describe("Select", () => { - const baseProps = { - options: stringOptions, - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it("should render the Select component", () => { - const { container } = render(Select, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept a change event handler", async () => { - const changeHandler = vi.fn(); - const props = { - ...baseProps, - "data-testid": "my-select", - value: "two", - }; - const { component } = render(Select, { ...baseOptions, props }); - - /** @type {HTMLSelectElement} */ - const select = screen.getByTestId("my-select"); - const target = select.querySelector("option[value='four']"); - - component.$on("change", changeHandler); - - await fireEvent.change(select, { target }); - - expect(changeHandler).toHaveBeenCalledTimes(1); - expect(changeHandler).toHaveBeenCalledWith(expect.any(Event)); - expect(select.value).toBe("four"); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept an array of objects as options", () => { - const props = { - ...baseProps, - options: objectOptions, - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should use the value as label if an object is missing it", () => { - const objectOptions2 = objectOptions.concat({ value: "5" }); - const props = { - ...baseProps, - options: objectOptions2, - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept an empty string as label and use it instead of falling back to the value", () => { - const objectOptions2 = objectOptions.concat({ label: "", value: "5" }); - const props = { - ...baseProps, - options: objectOptions2, - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept an array of strings as `options` and use each string as both label and value", () => { - const props = { - ...baseProps, - options: groupedOptionsStrings["Group one"], - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept a grouped object as `options` and create option groups", () => { - const props = { - ...baseProps, - options: groupedOptions, - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should accept an array of string as values of a grouped object", () => { - const props = { - ...baseProps, - options: groupedOptionsStrings, - }; - const { container } = render(Select, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Switch.spec.js b/explorer/src/lib/dusk/components/__tests__/Switch.spec.js deleted file mode 100644 index d7702cb1de..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Switch.spec.js +++ /dev/null @@ -1,138 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; - -import { Switch } from ".."; - -describe("Switch", () => { - const baseProps = {}; - - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it('should render the "Switch" component with a default tab index of `0`', async () => { - const { container, rerender } = render(Switch, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - - await rerender({ ...baseProps, value: true }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should use the received tab index", () => { - const props = { - ...baseProps, - tabindex: 5, - }; - const { container } = render(Switch, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render the component in a disabled status with a tabindex of `-1`", async () => { - const props = { - ...baseProps, - disabled: true, - tabindex: 5, - }; - const { container, rerender } = render(Switch, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - - await rerender({ ...props, value: true }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should pass additional class names and attributes to the root element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - }; - const { container } = render(Switch, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - describe("Event handlers", () => { - it("should dispatch a `change` event when the switch is clicked", async () => { - const { component, getByRole } = render(Switch, baseOptions); - const switchElement = getByRole("switch"); - const handler = vi.fn(); - - component.$on("change", handler); - - await fireEvent.click(switchElement); - await fireEvent.click(switchElement); - - expect(handler).toHaveBeenCalledTimes(2); - expect(handler).toHaveBeenNthCalledWith( - 1, - expect.objectContaining({ detail: true }) - ); - expect(handler).toHaveBeenNthCalledWith( - 2, - expect.objectContaining({ detail: false }) - ); - }); - - it("should dispatch a `change` event when the user presses space on the switch", async () => { - const { component, getByRole } = render(Switch, baseOptions); - const switchElement = getByRole("switch"); - const handler = vi.fn(); - - component.$on("change", handler); - - await fireEvent.keyDown(switchElement, { key: " " }); - await fireEvent.keyDown(switchElement, { key: " " }); - - expect(handler).toHaveBeenCalledTimes(2); - expect(handler).toHaveBeenNthCalledWith( - 1, - expect.objectContaining({ detail: true }) - ); - expect(handler).toHaveBeenNthCalledWith( - 2, - expect.objectContaining({ detail: false }) - ); - }); - - it("should not dispatch an event if the user presses another key", async () => { - const { component, getByRole } = render(Switch, baseOptions); - const switchElement = getByRole("switch"); - const handler = vi.fn(); - - component.$on("change", handler); - - await fireEvent.keyDown(switchElement, { key: "Enter" }); - await fireEvent.keyDown(switchElement, { key: "a" }); - - expect(handler).not.toHaveBeenCalled(); - }); - - it("should not dispatch an event if the switch is disabled", async () => { - const props = { - ...baseProps, - disabled: true, - }; - const { component, getByRole } = render(Switch, { - ...baseOptions, - props, - }); - const switchElement = getByRole("switch"); - const handler = vi.fn(); - - component.$on("change", handler); - - await fireEvent.click(switchElement); - await fireEvent.keyDown(switchElement, { key: " " }); - - expect(handler).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Textbox.spec.js b/explorer/src/lib/dusk/components/__tests__/Textbox.spec.js deleted file mode 100644 index 300f3efeed..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Textbox.spec.js +++ /dev/null @@ -1,115 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; - -import { Textbox } from ".."; - -describe("Textbox", () => { - const baseProps = {}; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - afterEach(cleanup); - - it('should render a Textbox of type "text" as a default', () => { - const { container } = render(Textbox, baseOptions); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should render a Textbox component of the desired type", () => { - [ - "email", - "hidden", - "multiline", - "number", - "password", - "search", - "tel", - "text", - "url", - ].forEach((type) => { - const props = { - ...baseProps, - type, - }; - const { container } = render(Textbox, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - - cleanup(); - }); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - value: "some textbox text", - }; - const { container } = render(Textbox, { ...baseOptions, props }); - - expect(container.firstChild).toMatchSnapshot(); - }); - - it("should change value before forwarding the `input` event", async () => { - const initialValue = "some textbox text"; - const newValue = "new value"; - const props = { - ...baseProps, - className: "foo bar", - id: "some-id", - value: initialValue, - }; - - const changeHandler = vi.fn(); - - const { component, getByRole } = render(Textbox, { ...baseOptions, props }); - - const input = getByRole("textbox"); - - expect(input).toHaveValue(initialValue); - - component.$on("input", changeHandler); - - await fireEvent.input(input, { target: { value: newValue } }); - - expect(input).toHaveValue(newValue); - - expect(changeHandler).toHaveBeenCalledTimes(1); - expect(changeHandler).toHaveBeenCalledWith( - expect.objectContaining({ - target: expect.objectContaining({ value: newValue }), - }) - ); - }); - - it("should expose a method to give focus to the rendered element", () => { - const { component, getByRole } = render(Textbox, baseOptions); - const input = getByRole("textbox"); - - component.focus(); - - expect(input).toHaveFocus(); - }); - - it("should expose a method to select the element's text", () => { - const props = { - ...baseProps, - value: "some input text", - }; - const { component, getByRole } = render(Textbox, { ...baseOptions, props }); - const input = /** @type {HTMLInputElement} */ (getByRole("textbox")); - - component.select(); - - const selectedText = input.value.substring( - Number(input.selectionStart), - Number(input.selectionEnd) - ); - - expect(selectedText).toBe(props.value); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Toast.spec.js b/explorer/src/lib/dusk/components/__tests__/Toast.spec.js deleted file mode 100644 index 6b5d018b06..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Toast.spec.js +++ /dev/null @@ -1,177 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { cleanup, render } from "@testing-library/svelte"; -import { get } from "svelte/store"; -import { fly } from "svelte/transition"; -import { mdiAlertOutline } from "@mdi/js"; - -import { Toast } from ".."; -import { toast, toastList } from "../toast/store"; - -vi.mock("svelte/transition"); - -describe("Toast", () => { - const baseProps = { - flyDuration: 500, - timer: 2000, - }; - - /** @param {HTMLElement} list */ - const getToastItems = (list) => list.querySelectorAll(".dusk-toast__item"); - - vi.useFakeTimers(); - - afterEach(() => { - vi.mocked(fly).mockClear(); - cleanup(); - }); - - afterAll(() => { - vi.doUnmock("svelte/transition"); - }); - - it("should render and dismiss the Toast component with the correct properties", async () => { - const { getByRole } = render(Toast, baseProps); - const list = getByRole("list"); - - expect(get(toastList).length).toBe(0); - expect(getToastItems(list).length).toBe(0); - expect(fly).not.toHaveBeenCalled(); - - toast("success", "Render Toast 1", mdiAlertOutline); - - await vi.advanceTimersToNextTimerAsync(); - - const items = getToastItems(list); - const toastStoredList = get(toastList); - - expect(toastStoredList.length).toBe(1); - expect(toastStoredList[0]).toStrictEqual({ - icon: mdiAlertOutline, - id: expect.any(String), - message: "Render Toast 1", - type: "success", - }); - expect(items.length).toBe(1); - expect(items[0]).toHaveTextContent("Render Toast 1"); - expect( - items[0].querySelector(".dusk-toast__item-icon-wrapper--success") - ).toBeDefined(); - expect( - items[0].querySelector(`path[d="${mdiAlertOutline}"]`) - ).toBeDefined(); - expect(fly).toHaveBeenCalledTimes(1); - expect(fly).toHaveBeenCalledWith( - items[0], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "in" } - ); - expect(list).toMatchSnapshot(); - - await vi.advanceTimersByTimeAsync(baseProps.timer); - - expect(get(toastList).length).toBe(0); - expect(fly).toHaveBeenCalledTimes(2); - expect(fly).toHaveBeenNthCalledWith( - 2, - items[0], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "out" } - ); - }); - - it("should render the Toast component with the correct custom class and rest props", async () => { - const customProps = { - className: "test-toast", - "data-baz": "baz", - flyDuration: 500, - id: "toast-container", - timer: 2000, - }; - - const { getByRole } = render(Toast, customProps); - const list = getByRole("list"); - - expect(list).toHaveClass(`${customProps.className}`); - expect(list).toHaveAttribute("id", customProps.id); - expect(list).toHaveAttribute("data-baz", customProps["data-baz"]); - - expect(list).toMatchSnapshot(); - }); - - it("should render and dismiss 2 Toasts", async () => { - const { getByRole } = render(Toast, baseProps); - const list = getByRole("list"); - - expect(get(toastList).length).toBe(0); - expect(getToastItems(list).length).toBe(0); - expect(fly).not.toHaveBeenCalled(); - - toast("success", "Render Toast 1", mdiAlertOutline); - toast("info", "Render Toast 2", mdiAlertOutline); - - await vi.advanceTimersToNextTimerAsync(); - - const items = getToastItems(list); - const toastStoredList = get(toastList); - - expect(toastStoredList.length).toBe(2); - expect(toastStoredList[0]).toStrictEqual({ - icon: mdiAlertOutline, - id: expect.any(String), - message: "Render Toast 1", - type: "success", - }); - expect(toastStoredList[1]).toStrictEqual({ - icon: mdiAlertOutline, - id: expect.any(String), - message: "Render Toast 2", - type: "info", - }); - expect(items.length).toBe(2); - expect(items[0]).toHaveTextContent("Render Toast 1"); - expect( - items[0].querySelector(".dusk-toast__item-icon-wrapper--success") - ).toBeDefined(); - expect( - items[0].querySelector(`path[d="${mdiAlertOutline}"]`) - ).toBeDefined(); - - expect(items[1]).toHaveTextContent("Render Toast 2"); - expect( - items[1].querySelector(".dusk-toast__item-icon-wrapper--info") - ).toBeDefined(); - expect( - items[1].querySelector(`path[d="${mdiAlertOutline}"]`) - ).toBeDefined(); - - expect(fly).toHaveBeenCalledTimes(2); - expect(fly).toHaveBeenCalledWith( - items[0], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "in" } - ); - expect(fly).toHaveBeenCalledWith( - items[1], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "in" } - ); - expect(list).toMatchSnapshot(); - - await vi.advanceTimersByTimeAsync(baseProps.timer); - - expect(get(toastList).length).toBe(0); - expect(fly).toHaveBeenCalledTimes(4); - expect(fly).toHaveBeenNthCalledWith( - 3, - items[0], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "out" } - ); - expect(fly).toHaveBeenNthCalledWith( - 4, - items[1], - expect.objectContaining({ duration: baseProps.flyDuration }), - { direction: "out" } - ); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/Tooltip.spec.js b/explorer/src/lib/dusk/components/__tests__/Tooltip.spec.js deleted file mode 100644 index d0ed1b8f24..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/Tooltip.spec.js +++ /dev/null @@ -1,682 +0,0 @@ -import { - afterAll, - afterEach, - beforeEach, - describe, - expect, - it, - vi, -} from "vitest"; -import { computePosition, offset as setOffset } from "@floating-ui/dom"; -import { cleanup, fireEvent, render } from "@testing-library/svelte"; -import { tick } from "svelte"; - -import { Tooltip } from ".."; - -vi.mock("@floating-ui/dom"); -vi.useFakeTimers(); - -/** @param {Record} dataset */ -function createEventTarget(dataset) { - const target = document.createElement("div"); - - Object.keys(dataset).forEach((key) => { - target.dataset[key] = dataset[key]; - }); - - return document.body.appendChild(target); -} - -describe("Tooltip", () => { - /** @type {import("svelte").ComponentProps} */ - const baseProps = { - defaultDelayHide: 300, - defaultDelayShow: 500, - defaultOffset: 12, - defaultPlace: "bottom", - defaultType: "success", - id: "tooltip-id", - }; - const baseOptions = { - props: baseProps, - target: document.body, - }; - - /** @type {import("@floating-ui/dom").ComputePositionReturn} */ - const defaultComputedPosition = { - middlewareData: {}, - placement: "left", - strategy: "fixed", - x: 999, - y: 888, - }; - - const clearTimeoutSpy = vi.spyOn(window, "clearTimeout"); - const disconnectSpy = vi.spyOn(IntersectionObserver.prototype, "disconnect"); - const observeSpy = vi.spyOn(IntersectionObserver.prototype, "observe"); - const unobserveSpy = vi.spyOn(IntersectionObserver.prototype, "unobserve"); - - vi.mocked(computePosition).mockResolvedValue(defaultComputedPosition); - - afterEach(() => { - cleanup(); - vi.mocked(computePosition).mockClear(); - vi.mocked(setOffset).mockClear(); - vi.mocked(IntersectionObserver).mockClear(); - clearTimeoutSpy.mockClear(); - disconnectSpy.mockClear(); - observeSpy.mockClear(); - unobserveSpy.mockClear(); - }); - - afterAll(() => { - vi.doUnmock("@floating-ui/dom"); - clearTimeoutSpy.mockRestore(); - disconnectSpy.mockRestore(); - observeSpy.mockRestore(); - unobserveSpy.mockRestore(); - }); - - it("should render the Tooltip component", () => { - const { getByRole } = render(Tooltip, baseOptions); - - expect(getByRole("tooltip", { hidden: true })).toMatchSnapshot(); - }); - - it("should disconnect the Intersection Observer when unmounting", () => { - const { unmount } = render(Tooltip, baseOptions); - - unmount(); - - expect(disconnectSpy).toHaveBeenCalledTimes(1); - }); - - it("should pass additional class names and attributes to the rendered element", () => { - const props = { - ...baseProps, - className: "foo bar", - "data-baz": "baz", - }; - const { getByRole } = render(Tooltip, { ...baseOptions, props }); - const tooltip = getByRole("tooltip", { hidden: true }); - - expect(tooltip).toHaveClass("foo bar"); - expect(tooltip).toHaveAttribute("data-baz", "baz"); - expect(tooltip).toMatchSnapshot(); - }); - - it("shouldn't allow overwriting the `left` and `top` style rules", () => { - const expectedStyle = "color: red; left: 0px; top: 0px;"; - const props = { - ...baseProps, - className: "foo bar", - style: "color: red; left: 99px; top: 99px", - }; - const { getByRole } = render(Tooltip, { ...baseOptions, props }); - - expect(getByRole("tooltip", { hidden: true }).getAttribute("style")).toBe( - expectedStyle - ); - }); - - it("should add event listeners to the document body when mounting and remove them when unmounting", () => { - const addListenerSpy = vi.spyOn(document.body, "addEventListener"); - const removeListenerSpy = vi.spyOn(document.body, "removeEventListener"); - const { unmount } = render(Tooltip, baseOptions); - const handlers = addListenerSpy.mock.calls.map((call) => call[1]); - - expect(addListenerSpy).toHaveBeenCalledTimes(5); - expect(addListenerSpy).toHaveBeenNthCalledWith( - 1, - "focusin", - expect.any(Function), - true - ); - expect(addListenerSpy).toHaveBeenNthCalledWith( - 2, - "focusout", - expect.any(Function), - true - ); - expect(addListenerSpy).toHaveBeenNthCalledWith( - 3, - "keydown", - expect.any(Function), - true - ); - expect(addListenerSpy).toHaveBeenNthCalledWith( - 4, - "mouseenter", - expect.any(Function), - true - ); - expect(addListenerSpy).toHaveBeenNthCalledWith( - 5, - "mouseleave", - expect.any(Function), - true - ); - - unmount(); - - expect(removeListenerSpy).toHaveBeenCalledTimes(5); - - expect(removeListenerSpy).toHaveBeenNthCalledWith( - 1, - "focusin", - handlers[0], - true - ); - expect(removeListenerSpy).toHaveBeenNthCalledWith( - 2, - "focusout", - handlers[1], - true - ); - expect(removeListenerSpy).toHaveBeenNthCalledWith( - 3, - "keydown", - handlers[2], - true - ); - expect(removeListenerSpy).toHaveBeenNthCalledWith( - 4, - "mouseenter", - handlers[3], - true - ); - expect(removeListenerSpy).toHaveBeenNthCalledWith( - 5, - "mouseleave", - handlers[4], - true - ); - - addListenerSpy.mockRestore(); - removeListenerSpy.mockRestore(); - }); - - describe("Tooltip show and hide events", () => { - /** @type {HTMLElement} */ - let badTarget; - - /** @type {HTMLElement} */ - let target; - - const prevTooltipElement = document.body.appendChild( - document.createElement("span") - ); - const dataset = { tooltipId: "tooltip-id", tooltipText: "some text" }; - - beforeEach(() => { - badTarget = createEventTarget({ tooltipId: "fake-tooltip-id" }); - prevTooltipElement.setAttribute("aria-described-by", baseProps.id); - target = createEventTarget(dataset); - }); - - describe("Tooltip show events", () => { - it("should ignore mouse enter and focus-in events if the target element doesn't refer to the tooltip", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(document.body, { target: badTarget }); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(badTarget.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await fireEvent.mouseEnter(badTarget); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(badTarget.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - expect(clearTimeoutSpy).not.toHaveBeenCalled(); - expect(computePosition).not.toHaveBeenCalled(); - }); - - it('should ignore mouse enter and focus-in events if the target element has the `data-tooltip-disabled` attribute set to `"true"`', async () => { - const disabledTarget = createEventTarget({ - ...dataset, - tooltipDisabled: "true", - }); - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(document.body, { target: disabledTarget }); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(disabledTarget.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await fireEvent.mouseEnter(disabledTarget); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(disabledTarget.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - expect(clearTimeoutSpy).not.toHaveBeenCalled(); - expect(computePosition).not.toHaveBeenCalled(); - }); - - it("should show the tooltip on a focus-in event if the target element refers to it and start observing target's intersection", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(observeSpy).toHaveBeenCalledTimes(1); - expect(observeSpy).toHaveBeenCalledWith(target); - expect(computePosition).toHaveBeenCalledTimes(1); - expect(computePosition).toHaveBeenCalledWith( - target, - tooltip, - expect.objectContaining({ placement: baseProps.defaultPlace }) - ); - expect(setOffset).toHaveBeenCalledTimes(1); - expect(setOffset).toHaveBeenCalledWith({ - mainAxis: baseProps.defaultOffset, - }); - - expect(tooltip).toHaveTextContent(dataset.tooltipText); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayShow)); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(target.getAttribute("aria-described-by")).toBe(baseProps.id); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should show the tooltip on a mouse enter event if the target element refers to it and start observing target mutations", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.mouseEnter(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(observeSpy).toHaveBeenCalledTimes(1); - expect(observeSpy).toHaveBeenCalledWith(target); - expect(computePosition).toHaveBeenCalledTimes(1); - expect(computePosition).toHaveBeenCalledWith( - target, - tooltip, - expect.objectContaining({ placement: baseProps.defaultPlace }) - ); - expect(setOffset).toHaveBeenCalledTimes(1); - expect(setOffset).toHaveBeenCalledWith({ - mainAxis: baseProps.defaultOffset, - }); - - expect(tooltip).toHaveTextContent(dataset.tooltipText); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayShow)); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(target.getAttribute("aria-described-by")).toBe(baseProps.id); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should use attributes defined on the target element, if they are present, rather than the defaults", async () => { - target.setAttribute("data-tooltip-delay-show", "700"); - target.setAttribute("data-tooltip-offset", "0"); - target.setAttribute("data-tooltip-place", "top"); - target.setAttribute("data-tooltip-type", "error"); - - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.mouseEnter(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(computePosition).toHaveBeenCalledTimes(1); - expect(computePosition).toHaveBeenCalledWith( - target, - tooltip, - expect.objectContaining({ placement: "top" }) - ); - expect(setOffset).toHaveBeenCalledTimes(1); - expect(setOffset).toHaveBeenCalledWith({ mainAxis: 0 }); - - expect(tooltip).toHaveTextContent(dataset.tooltipText); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayShow)); - - expect(tooltip).toHaveTextContent(dataset.tooltipText); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBe( - baseProps.id - ); - - await vi.advanceTimersByTimeAsync( - 700 - Number(baseProps.defaultDelayShow) - ); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(tooltip).toHaveClass("dusk-tooltip-error"); - expect(target.getAttribute("aria-described-by")).toBe(baseProps.id); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should not wait for a delay before showing if the value is zero", async () => { - target.setAttribute("data-tooltip-delay-show", "0"); - - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.mouseEnter(target); - await tick(); - - expect(tooltip).toHaveTextContent(dataset.tooltipText); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(target.getAttribute("aria-described-by")).toBe(baseProps.id); - expect(prevTooltipElement.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should not show the tooltip after the delay if the target element doesn't exist anymore", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.mouseEnter(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(observeSpy).toHaveBeenCalledTimes(1); - expect(computePosition).toHaveBeenCalledTimes(1); - expect(setOffset).toHaveBeenCalledTimes(1); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - - target.remove(); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayShow)); - - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - }); - - describe("Tooltip hide events", () => { - it("should ignore mouse leave and focus-out events if the target element doesn't refer to the tooltip", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.mouseEnter(document.body, { target }); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.focusOut(document.body, { target: badTarget }); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.mouseLeave(document.body, { target: badTarget }); - await vi.advanceTimersToNextTimerAsync(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - expect(unobserveSpy).not.toHaveBeenCalled(); - }); - - it("should hide the tooltip on a focus-out event if the target element refers to it", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.focusOut(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledWith(target); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayHide)); - - expect(tooltip).toHaveTextContent(""); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should hide the tooltip on a mouse leave event if the target element refers to it", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.mouseLeave(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledWith(target); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayHide)); - - expect(tooltip).toHaveTextContent(""); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should use the hide delay on the target element, if present, rather than the default", async () => { - target.setAttribute("data-tooltip-delay-hide", "700"); - - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.mouseLeave(target); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledWith(target); - - await vi.advanceTimersByTimeAsync(Number(baseProps.defaultDelayHide)); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await vi.advanceTimersByTimeAsync( - 700 - Number(baseProps.defaultDelayHide) - ); - - expect(tooltip).toHaveTextContent(""); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should not wait for a delay before hiding if the value is zero", async () => { - target.setAttribute("data-tooltip-delay-hide", "0"); - - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.mouseLeave(target); - await tick(); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledWith(target); - expect(tooltip).toHaveTextContent(""); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should hide the tooltip if the user presses the escape key", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.keyDown(target, { key: "a" }); - await vi.advanceTimersToNextTimerAsync(); - - expect(clearTimeoutSpy).not.toHaveBeenCalled(); - expect(unobserveSpy).not.toHaveBeenCalled(); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - await fireEvent.keyDown(target, { key: "Escape" }); - await vi.advanceTimersToNextTimerAsync(); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledTimes(1); - expect(unobserveSpy).toHaveBeenCalledWith(target); - expect(tooltip).toHaveTextContent(""); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(target.getAttribute("aria-described-by")).toBeNull(); - }); - - it("should hide the tooltip if the target element is detached from the DOM and disconnect the observer", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - const [callback] = vi.mocked(IntersectionObserver).mock.calls[0]; - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(target.isConnected).toBe(true); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - target.remove(); - - // @ts-ignore - callback([{ target }], new IntersectionObserver(() => {})); - - await tick(); - - expect(target.isConnected).toBe(false); - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(disconnectSpy).toHaveBeenCalledTimes(1); - }); - - it("shouldn't hide the tooltip if unrelated elements are detached from the DOM", async () => { - const unrelatedElement = document.body.appendChild( - document.createElement("span") - ); - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - const [callback] = vi.mocked(IntersectionObserver).mock.calls[0]; - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - unrelatedElement.remove(); - - // @ts-ignore - callback([{ target }], new IntersectionObserver(() => {})); - - await tick(); - - expect(clearTimeoutSpy).not.toHaveBeenCalled(); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(disconnectSpy).not.toHaveBeenCalled(); - }); - - it("should hide the tooltip if the intersection ratio of the target element is less or equal to zero", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - const [callback] = vi.mocked(IntersectionObserver).mock.calls[0]; - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(target.isConnected).toBe(true); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - const entries = [{ intersectionRatio: 0, target }]; - - // @ts-ignore - callback(entries, new IntersectionObserver(() => {})); - - await tick(); - - expect(clearTimeoutSpy).toHaveBeenCalledTimes(1); - expect(tooltip.getAttribute("aria-hidden")).toBe("true"); - expect(disconnectSpy).toHaveBeenCalledTimes(1); - }); - - it("shouldn't hide the tooltip if the intersection ration of the target is greater than zero", async () => { - const { getByRole } = render(Tooltip, baseOptions); - const tooltip = getByRole("tooltip", { hidden: true }); - const [callback] = vi.mocked(IntersectionObserver).mock.calls[0]; - - await fireEvent.focusIn(target); - await vi.advanceTimersToNextTimerAsync(); - - clearTimeoutSpy.mockClear(); - - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - - const entries = [{ intersectionRatio: 1, target }]; - - // @ts-ignore - callback(entries, new IntersectionObserver(() => {})); - - await tick(); - - expect(clearTimeoutSpy).not.toHaveBeenCalled(); - expect(tooltip.getAttribute("aria-hidden")).toBe("false"); - expect(disconnectSpy).not.toHaveBeenCalled(); - }); - }); - }); -}); diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Anchor.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Anchor.spec.js.snap deleted file mode 100644 index 084b80c879..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Anchor.spec.js.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Anchor > should pass additional class names and attributes to the rendered element 1`] = ` - - - some text - - -`; - -exports[`Anchor > should render the Anchor component 1`] = ` - - - some text - - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/AnchorButton.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/AnchorButton.spec.js.snap deleted file mode 100644 index 14595409e7..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/AnchorButton.spec.js.snap +++ /dev/null @@ -1,199 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`AnchorButton > should add a disabled class if the related property is \`true\` 1`] = ` - - - some text - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon and text 1`] = ` - - - some text - - - - - - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon and text 2`] = ` - - - some text - - - - - - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon and text 3`] = ` - - - some text - - - - - - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon only 1`] = ` - - - - - - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon only 2`] = ` - - - - - - - - -`; - -exports[`AnchorButton > should be able to render a AnchorButton with an icon only 3`] = ` - - - - - - - - -`; - -exports[`AnchorButton > should pass additional class names and attributes to the rendered element 1`] = ` - - - some text - - - -`; - -exports[`AnchorButton > should render a AnchorButton without a text 1`] = ` - - - -`; - -exports[`AnchorButton > should render the AnchorButton component 1`] = ` - - - some text - - - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Badge.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Badge.spec.js.snap deleted file mode 100644 index a652db3a37..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Badge.spec.js.snap +++ /dev/null @@ -1,42 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Badge > should pass additional class names and attributes to the root element 1`] = ` - - Badge - -`; - -exports[`Badge > should render the Badge component using the type "error" variant 1`] = ` - - Badge - -`; - -exports[`Badge > should render the Badge component using the type "neutral" as a default 1`] = ` - - Badge - -`; - -exports[`Badge > should render the Badge component using the type "success" variant 1`] = ` - - Badge - -`; - -exports[`Badge > should render the Badge component using the type "warning" variant 1`] = ` - - Badge - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Button.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Button.spec.js.snap deleted file mode 100644 index c004221301..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Button.spec.js.snap +++ /dev/null @@ -1,173 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Button > should be able to render a button with an icon and text 1`] = ` - -`; - -exports[`Button > should be able to render a button with an icon and text 2`] = ` - -`; - -exports[`Button > should be able to render a button with an icon only 1`] = ` - -`; - -exports[`Button > should be able to render a button with an icon only 2`] = ` - -`; - -exports[`Button > should pass additional class names and attributes to the rendered element 1`] = ` - -`; - -exports[`Button > should render a button of the desired type 1`] = ` - -`; - -exports[`Button > should render a button of the desired type 2`] = ` - -`; - -exports[`Button > should render a button of the desired type 3`] = ` - -`; - -exports[`Button > should render a button of the desired type 4`] = ` - -`; - -exports[`Button > should render a button without a text 1`] = ` - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Card.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Card.spec.js.snap deleted file mode 100644 index 0374238dd7..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Card.spec.js.snap +++ /dev/null @@ -1,13 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Card > renders the Card component 1`] = ` -
- - - some text - - -
-`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Icon.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Icon.spec.js.snap deleted file mode 100644 index 5e75f800ea..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Icon.spec.js.snap +++ /dev/null @@ -1,61 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Icon > should accept a custom role for the SVG component 1`] = ` - - - -`; - -exports[`Icon > should pass additional class names and attributes to the rendered element 1`] = ` - - - -`; - -exports[`Icon > should pass additional class names and attributes to the rendered element 2`] = ` - - - - -`; - -exports[`Icon > should render the Icon component 1`] = ` - - - -`; - -exports[`Icon > should render the icon inside a \`g\` element if it's part of a stack 1`] = ` - - - - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/NavList.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/NavList.spec.js.snap deleted file mode 100644 index 8d2e8c2128..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/NavList.spec.js.snap +++ /dev/null @@ -1,43 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`NavList > renders the NavList component 1`] = ` - -`; - -exports[`NavList > should pass additional class names and attributes to the rendered element 1`] = ` - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/ProgressBar.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/ProgressBar.spec.js.snap deleted file mode 100644 index f16c850b8a..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/ProgressBar.spec.js.snap +++ /dev/null @@ -1,65 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`ProgressBar > re-renders the \`ProgressBar\` component when the current percentage property changes 1`] = ` -
-
-
-`; - -exports[`ProgressBar > re-renders the \`ProgressBar\` component when the current percentage property changes 2`] = ` -
-
-
-`; - -exports[`ProgressBar > renders the \`ProgressBar\` component with current percentage set as zero 1`] = ` -
-
-
-`; - -exports[`ProgressBar > renders the \`ProgressBar\` component with no current percentage set 1`] = ` -
-
-
-`; - -exports[`ProgressBar > should pass additional class names to the rendered element 1`] = ` -
-
-
-`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/RelativeTime.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/RelativeTime.spec.js.snap deleted file mode 100644 index a66d8664b7..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/RelativeTime.spec.js.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`RelativeTime > should allow to put custom content in the default slot 1`] = ` - -`; - -exports[`RelativeTime > should pass additional class names and attributes to the rendered element 1`] = ` - -`; - -exports[`RelativeTime > should render the relative time of the given date and should not updated it by default 1`] = ` - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Select.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Select.spec.js.snap deleted file mode 100644 index 29ee9911a5..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Select.spec.js.snap +++ /dev/null @@ -1,318 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Select > should accept a grouped object as \`options\` and create option groups 1`] = ` - -`; - -exports[`Select > should accept an array of objects as options 1`] = ` - -`; - -exports[`Select > should accept an array of string as values of a grouped object 1`] = ` - -`; - -exports[`Select > should accept an array of strings as \`options\` and use each string as both label and value 1`] = ` - -`; - -exports[`Select > should accept an empty string as label and use it instead of falling back to the value 1`] = ` - -`; - -exports[`Select > should pass additional class names and attributes to the rendered element 1`] = ` - -`; - -exports[`Select > should render the Select component 1`] = ` - -`; - -exports[`Select > should use the value as label if an object is missing it 1`] = ` - -`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Switch.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Switch.spec.js.snap deleted file mode 100644 index c546c2969d..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Switch.spec.js.snap +++ /dev/null @@ -1,62 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Switch > should pass additional class names and attributes to the root element 1`] = ` -
-`; - -exports[`Switch > should render the "Switch" component with a default tab index of \`0\` 1`] = ` -
-`; - -exports[`Switch > should render the "Switch" component with a default tab index of \`0\` 2`] = ` -
-`; - -exports[`Switch > should render the component in a disabled status with a tabindex of \`-1\` 1`] = ` -
-`; - -exports[`Switch > should render the component in a disabled status with a tabindex of \`-1\` 2`] = ` -
-`; - -exports[`Switch > should use the received tab index 1`] = ` -
-`; diff --git a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Textbox.spec.js.snap b/explorer/src/lib/dusk/components/__tests__/__snapshots__/Textbox.spec.js.snap deleted file mode 100644 index 853e5b42e2..0000000000 --- a/explorer/src/lib/dusk/components/__tests__/__snapshots__/Textbox.spec.js.snap +++ /dev/null @@ -1,79 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Textbox > should pass additional class names and attributes to the rendered element 1`] = ` - -`; - -exports[`Textbox > should render a Textbox component of the desired type 1`] = ` - -`; - -exports[`Textbox > should render a Textbox component of the desired type 2`] = ` - -`; - -exports[`Textbox > should render a Textbox component of the desired type 3`] = ` - -{:else} - -{/if} diff --git a/explorer/src/lib/dusk/components/toast/Toast.css b/explorer/src/lib/dusk/components/toast/Toast.css deleted file mode 100644 index 774519e70c..0000000000 --- a/explorer/src/lib/dusk/components/toast/Toast.css +++ /dev/null @@ -1,49 +0,0 @@ -.dusk-toast { - display: flex; - flex-direction: column; - position: fixed; - right: 20px; - bottom: 20px; - z-index: 5; - row-gap: 0.625em; -} - -.dusk-toast__item { - display: flex; - column-gap: 0.625em; - padding: 0.625em; - border-radius: 1em; - background-color: var(--background-color-alt); - min-width: 200px; - max-width: 250px; -} - -.dusk-toast__item-icon-wrapper { - display: flex; - align-items: center; - justify-content: center; - width: 1.625em; - height: 1.625em; - border-radius: 100%; - flex-shrink: 0; -} - -.dusk-toast__item-icon-wrapper--info { - background-color: var(--info-color); -} - -.dusk-toast__item-icon-wrapper--success { - background-color: var(--success-color); -} - -.dusk-toast__item-icon-wrapper--warning { - background-color: var(--warning-color); -} - -.dusk-toast__item-icon-wrapper--error { - background-color: var(--error-color); -} - -.dusk-toast__item-icon-wrapper--error .dusk-toast__item-icon { - color: #fff; -} diff --git a/explorer/src/lib/dusk/components/toast/Toast.svelte b/explorer/src/lib/dusk/components/toast/Toast.svelte deleted file mode 100644 index c36ff8eb7d..0000000000 --- a/explorer/src/lib/dusk/components/toast/Toast.svelte +++ /dev/null @@ -1,47 +0,0 @@ - - -
    - {#each $toastList as { id, icon, message, type } (id)} -
  • - {#if icon} - - - - {/if} - - {message} - -
  • - {/each} -
diff --git a/explorer/src/lib/dusk/components/toast/store.js b/explorer/src/lib/dusk/components/toast/store.js deleted file mode 100644 index 2da4a3424c..0000000000 --- a/explorer/src/lib/dusk/components/toast/store.js +++ /dev/null @@ -1,54 +0,0 @@ -import { get, writable } from "svelte/store"; - -/** - * @type {import('svelte/store').Writable} - * @description Stores each toast as an object in the array - */ -export const toastList = writable([]); - -/** - * @type {import('svelte/store').Writable} - * @description Stores the timer fused by all toasts - */ -export const toastTimer = writable(0); - -/** - * @param {string} message - * @param {string} icon - * @param {TooltipType} type - */ - -function addToast(type, message, icon) { - const id = `dusk-toast-${Math.random().toString(36)}`; - - toastList.update((store) => { - return [ - ...store, - { - icon: icon, - id: id, - message: message, - type: type, - }, - ]; - }); - - const timeoutID = window.setTimeout(() => { - deleteToast(id, timeoutID); - }, get(toastTimer)); -} - -/** - * @param {string} id - * @param {number} timeout - */ -function deleteToast(id, timeout) { - window.clearTimeout(timeout); - - // Deletes toast from store queue - toastList.update((store) => { - return store.filter((toast) => toast.id !== id); - }); -} - -export const toast = addToast; diff --git a/explorer/src/lib/dusk/components/tooltip/Tooltip.css b/explorer/src/lib/dusk/components/tooltip/Tooltip.css deleted file mode 100644 index 767cc36a8b..0000000000 --- a/explorer/src/lib/dusk/components/tooltip/Tooltip.css +++ /dev/null @@ -1,92 +0,0 @@ -.dusk-tooltip { - position: fixed; - display: inline-block; - width: max-content; - max-width: 40%; - white-space: break-spaces; - z-index: 9999; - - --tip-size: 0.625em; - --half-tip-size: calc(var(--tip-size) / 2); - --tip-main-axis-offset: -0.0625em; - - border-radius: var(--control-border-radius-size); - line-height: 1.5; - padding: var(--control-padding); - transition: opacity 0.2s ease-in-out 0s; - opacity: 1; -} - -.dusk-tooltip[aria-hidden="true"] { - visibility: hidden; - opacity: 0; -} - -.dusk-tooltip.dusk-tooltip-error { - background-color: var(--error-color); - color: var(--on-error-color); -} - -.dusk-tooltip.dusk-tooltip-info { - background-color: var(--info-color); - color: var(--on-info-color); -} - -.dusk-tooltip.dusk-tooltip-success { - background-color: var(--success-color); - color: var(--on-success-color); -} - -.dusk-tooltip.dusk-tooltip-warning { - background-color: var(--warning-color); - color: var(--on-warning-color); -} - -.dusk-tooltip::after { - background-color: inherit; - border: inherit; - pointer-events: none; - position: absolute; - content: ""; - display: inline-block; - width: var(--tip-size); - height: var(--tip-size); - transform: rotate(45deg); - transform-origin: center; -} - -.dusk-tooltip.dusk-tooltip-bottom::after { - bottom: 100%; - left: 50%; - margin-left: calc(var(--half-tip-size) * -1); - margin-bottom: calc(var(--half-tip-size) * -1 + var(--tip-main-axis-offset)); - border-bottom-color: transparent; - border-right-color: transparent; -} - -.dusk-tooltip.dusk-tooltip-left::after { - top: 50%; - left: 100%; - margin-left: calc(var(--half-tip-size) * -1 + var(--tip-main-axis-offset)); - margin-top: calc(var(--half-tip-size) * -1); - border-bottom-color: transparent; - border-left-color: transparent; -} - -.dusk-tooltip.dusk-tooltip-right::after { - top: 50%; - right: 100%; - margin-right: calc(var(--half-tip-size) * -1 + var(--tip-main-axis-offset)); - margin-top: calc(var(--half-tip-size) * -1); - border-top-color: transparent; - border-right-color: transparent; -} - -.dusk-tooltip.dusk-tooltip-top::after { - top: 100%; - left: 50%; - margin-left: calc(var(--half-tip-size) * -1); - margin-top: calc(var(--half-tip-size) * -1 + var(--tip-main-axis-offset)); - border-top-color: transparent; - border-left-color: transparent; -} diff --git a/explorer/src/lib/dusk/components/tooltip/Tooltip.svelte b/explorer/src/lib/dusk/components/tooltip/Tooltip.svelte deleted file mode 100644 index 7c3ca93b98..0000000000 --- a/explorer/src/lib/dusk/components/tooltip/Tooltip.svelte +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - diff --git a/explorer/src/lib/dusk/currency/__tests__/createCurrencyFormatter.spec.js b/explorer/src/lib/dusk/currency/__tests__/createCurrencyFormatter.spec.js deleted file mode 100644 index 2cda0110e1..0000000000 --- a/explorer/src/lib/dusk/currency/__tests__/createCurrencyFormatter.spec.js +++ /dev/null @@ -1,37 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createCurrencyFormatter } from ".."; - -describe("createCurrencyFormatter", () => { - it("should create a currency formatter using the given settings, but ignore the digits for FIAT currencies", () => { - const itFormatter = createCurrencyFormatter("it-IT", "EUR", 9); - const usFormatter = createCurrencyFormatter("en-US", "USD", 9); - - /** - * A non-breaking space is used here (code point 0x00A0) - * @see https://shapecatcher.com/unicode/info/160 - */ - expect(itFormatter(1_234_567.899)).toBe("1.234.567,899 €"); - expect(usFormatter(1_234_567.899)).toBe("$1,234,567.899"); - }); - - it('should accept "DUSK" as a currency, using the desired digits', () => { - const duskFormatter = createCurrencyFormatter("it-IT", "DUSK", 5); - - expect(duskFormatter(1_234_567.899_788_677)).toBe("1.234.567,89979"); - }); - - it("should accept BigInts as input", () => { - const duskFormatter = createCurrencyFormatter("it-IT", "DUSK", 5); - - expect(duskFormatter(1_234_567n)).toBe("1.234.567,00000"); - }); - - it("should throw an error for an invalid locale", () => { - expect(() => createCurrencyFormatter("foo-bar", "DUSK", 5)).toThrow(); - }); - - it("should throw an error for an invalid currency", () => { - expect(() => createCurrencyFormatter("it-IT", "foobarbaz", 5)).toThrow(); - }); -}); diff --git a/explorer/src/lib/dusk/currency/__tests__/createFeeFormatter.spec.js b/explorer/src/lib/dusk/currency/__tests__/createFeeFormatter.spec.js deleted file mode 100644 index 4a9308c95a..0000000000 --- a/explorer/src/lib/dusk/currency/__tests__/createFeeFormatter.spec.js +++ /dev/null @@ -1,25 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createFeeFormatter } from ".."; - -describe("createFeeFormatter", () => { - it("should create a locale aware formatter for fees, with at least 2 fraction digits but no more than 9", () => { - const itFormatter = createFeeFormatter("it-IT"); - const usFormatter = createFeeFormatter("en-US"); - - expect(itFormatter(123)).toBe("123,00"); - expect(usFormatter(123)).toBe("123.00"); - expect(itFormatter(123.456_789_456_789)).toBe("123,456789457"); - expect(usFormatter(123.456_789_456_789)).toBe("123.456789457"); - }); - - it("should accept BigInts as input", () => { - const formatter = createFeeFormatter("it-IT"); - - expect(formatter(1_234_567n)).toBe("1.234.567,00"); - }); - - it("should throw an error for an invalid locale", () => { - expect(() => createFeeFormatter("foo-bar")).toThrow(); - }); -}); diff --git a/explorer/src/lib/dusk/currency/__tests__/duskToLux.spec.js b/explorer/src/lib/dusk/currency/__tests__/duskToLux.spec.js deleted file mode 100644 index 51a8a549b8..0000000000 --- a/explorer/src/lib/dusk/currency/__tests__/duskToLux.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { duskToLux } from ".."; - -describe("duskToLux", () => { - it("should convert an amount in Dusk to Lux", () => { - expect(duskToLux(1)).toBe(1e9); - expect(duskToLux(3_456_789.012)).toBe(3_456_789_012_000_000); - }); -}); diff --git a/explorer/src/lib/dusk/currency/__tests__/luxToDusk.spec.js b/explorer/src/lib/dusk/currency/__tests__/luxToDusk.spec.js deleted file mode 100644 index cba7223d8a..0000000000 --- a/explorer/src/lib/dusk/currency/__tests__/luxToDusk.spec.js +++ /dev/null @@ -1,10 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { luxToDusk } from ".."; - -describe("luxToDusk", () => { - it("should convert an amount in Dusk to Lux", () => { - expect(luxToDusk(1e9)).toBe(1); - expect(luxToDusk(123_456_789_012)).toBe(123.456789012); - }); -}); diff --git a/explorer/src/lib/dusk/currency/createCurrencyFormatter.js b/explorer/src/lib/dusk/currency/createCurrencyFormatter.js deleted file mode 100644 index 1caa098e6f..0000000000 --- a/explorer/src/lib/dusk/currency/createCurrencyFormatter.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Creates a locale aware currency formatter for fiat or DUSK - * - * @param {String} locale A BCP 47 language tag - * @param {String} currency An ISO 4217 currency or "DUSK" - * @param {Number} digits The minimum fraction digits that should display - * @returns {(value: number | bigint) => string} - */ -const createFormatter = (locale, currency, digits) => { - const formatter = - currency.toUpperCase() === "DUSK" - ? new Intl.NumberFormat(locale, { minimumFractionDigits: digits }) - : new Intl.NumberFormat(locale, { - currency: currency, - maximumFractionDigits: 10, - minimumFractionDigits: 2, - style: "currency", - }); - - return (value) => formatter.format(value); -}; - -export default createFormatter; diff --git a/explorer/src/lib/dusk/currency/createFeeFormatter.js b/explorer/src/lib/dusk/currency/createFeeFormatter.js deleted file mode 100644 index f03da175a4..0000000000 --- a/explorer/src/lib/dusk/currency/createFeeFormatter.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * Creates a locale aware currency formatter for fees - * - * @param {String} locale A BCP 47 language tag - * @returns {(value: number | bigint) => string} - */ -const createFormatter = (locale) => { - const formatter = new Intl.NumberFormat(locale, { - maximumFractionDigits: 9, - minimumFractionDigits: 2, - }); - - return (value) => formatter.format(value); -}; - -export default createFormatter; diff --git a/explorer/src/lib/dusk/currency/currencies.js b/explorer/src/lib/dusk/currency/currencies.js deleted file mode 100644 index b9e4a6e0cb..0000000000 --- a/explorer/src/lib/dusk/currency/currencies.js +++ /dev/null @@ -1,49 +0,0 @@ -const currencies = [ - { code: "AED", currency: "United Arab Emirates Dirham" }, - { code: "ARS", currency: "Argentine Peso" }, - { code: "AUD", currency: "Australian Dollar" }, - { code: "BDT", currency: "Bangladeshi Taka" }, - { code: "BHD", currency: "Bahraini Dinar" }, - { code: "BMD", currency: "Bermudian Dollar" }, - { code: "BRL", currency: "Brazilian Real" }, - { code: "CAD", currency: "Canadian Dollar" }, - { code: "CFH", currency: "Swiss Franc" }, - { code: "CLP", currency: "Chilean Peso" }, - { code: "CNY", currency: "Renminbi" }, - { code: "CZK", currency: "Czech Koruna" }, - { code: "DKK", currency: "Danish Krone" }, - { code: "EUR", currency: "Euro" }, - { code: "GBP", currency: "Pound Sterling" }, - { code: "HKD", currency: "Hong Kong Dollar" }, - { code: "HUF", currency: "Hungarian Forint" }, - { code: "IDR", currency: "Indonesian Rupiah" }, - { code: "ILS", currency: "Israeli New Shekel" }, - { code: "INR", currency: "Indian Rupee" }, - { code: "JPY", currency: "Japanese Yen" }, - { code: "KRW", currency: "South Korean Won" }, - { code: "KWD", currency: "Kuwaiti Dinar" }, - { code: "LKR", currency: "Sri Lankan Rupee" }, - { code: "MMK", currency: "Myanmar Kyat" }, - { code: "MXN", currency: "Mexican Peso" }, - { code: "MYR", currency: "Malaysian Ringgit" }, - { code: "NGN", currency: "Nigerian Naira" }, - { code: "NOK", currency: "Norwegian Krone" }, - { code: "NZD", currency: "New Zealand Dollar" }, - { code: "PHP", currency: "Philippine Peso" }, - { code: "PKR", currency: "Pakistani Rupee" }, - { code: "PLN", currency: "Polish Złoty" }, - { code: "RUB", currency: "Russian Ruble" }, - { code: "SAR", currency: "Saudi Riyal" }, - { code: "SEK", currency: "Swedish Krona" }, - { code: "SGD", currency: "Singapore Dollar" }, - { code: "THB", currency: "Thai Baht" }, - { code: "TRY", currency: "Turkish Lira" }, - { code: "TWD", currency: "New Taiwan Dollar" }, - { code: "UAH", currency: "Ukrainian Hryvnia" }, - { code: "USD", currency: "United States Dollar" }, - { code: "VEF", currency: "Venezuelan Bolívar Fuerte" }, - { code: "VND", currency: "Vietnamese Dồng" }, - { code: "ZAR", currency: "South African Rand" }, -]; - -export default currencies; diff --git a/explorer/src/lib/dusk/currency/duskToLux.js b/explorer/src/lib/dusk/currency/duskToLux.js deleted file mode 100644 index 01457c7ff4..0000000000 --- a/explorer/src/lib/dusk/currency/duskToLux.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Temporary conversion function until - * `dusk-wallet-js` exposes its own. - * - * @param {number} n - * @returns {number} - */ -const duskToLux = (n) => n * 1e9; - -export default duskToLux; diff --git a/explorer/src/lib/dusk/currency/index.js b/explorer/src/lib/dusk/currency/index.js deleted file mode 100644 index b633d475db..0000000000 --- a/explorer/src/lib/dusk/currency/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as createCurrencyFormatter } from "./createCurrencyFormatter"; -export { default as createFeeFormatter } from "./createFeeFormatter"; -export { default as currencies } from "./currencies"; -export { default as duskToLux } from "./duskToLux"; -export { default as luxToDusk } from "./luxToDusk"; diff --git a/explorer/src/lib/dusk/currency/luxToDusk.js b/explorer/src/lib/dusk/currency/luxToDusk.js deleted file mode 100644 index 155243a1be..0000000000 --- a/explorer/src/lib/dusk/currency/luxToDusk.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Temporary conversion function until - * `dusk-wallet-js` exposes its own. - * - * @param {number} n - * @returns {number} - */ -const luxToDusk = (n) => n * 1e-9; - -export default luxToDusk; diff --git a/explorer/src/lib/dusk/date/__tests__/unixTsToDate.spec.js b/explorer/src/lib/dusk/date/__tests__/unixTsToDate.spec.js deleted file mode 100644 index a562ed152e..0000000000 --- a/explorer/src/lib/dusk/date/__tests__/unixTsToDate.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { unixTsToDate } from ".."; - -describe("unixTsToDate", () => { - it("should transform a Unix timestamp in a JS Date", () => { - const result = unixTsToDate(1713251109); - - expect(result).toBeInstanceOf(Date); - expect(result.toISOString()).toBe("2024-04-16T07:05:09.000Z"); - }); -}); diff --git a/explorer/src/lib/dusk/date/index.js b/explorer/src/lib/dusk/date/index.js deleted file mode 100644 index b2b6a3b043..0000000000 --- a/explorer/src/lib/dusk/date/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as unixTsToDate } from "./unixTsToDate"; diff --git a/explorer/src/lib/dusk/date/unixTsToDate.js b/explorer/src/lib/dusk/date/unixTsToDate.js deleted file mode 100644 index 652d2bf6ee..0000000000 --- a/explorer/src/lib/dusk/date/unixTsToDate.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * @param {number} ts - * @returns {Date} - */ -const unixTsToDate = (ts) => new Date(ts * 1000); - -export default unixTsToDate; diff --git a/explorer/src/lib/dusk/error/__tests__/getErrorFrom.spec.js b/explorer/src/lib/dusk/error/__tests__/getErrorFrom.spec.js deleted file mode 100644 index 7a53ef4274..0000000000 --- a/explorer/src/lib/dusk/error/__tests__/getErrorFrom.spec.js +++ /dev/null @@ -1,62 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { getErrorFrom } from ".."; - -describe("getErrorFrom", () => { - it("should return the received argument if it's an instance of `Error`", () => { - [ - class CustomError extends Error {}, - Error, - EvalError, - RangeError, - ReferenceError, - SyntaxError, - TypeError, - URIError, - ].forEach((Ctor) => { - const error = new Ctor("some error message"); - - expect(getErrorFrom(error)).toBe(error); - }); - - const aggregateError = new AggregateError([new Error("foo message")]); - - expect(getErrorFrom(aggregateError)).toBe(aggregateError); - }); - - it('should return an error having "Unknown error" as its message if the received argument is `null` or `undefined`', () => { - const expectedError = new Error("Unknown error"); - - expect(getErrorFrom(null)).toStrictEqual(expectedError); - expect(getErrorFrom(undefined)).toStrictEqual(expectedError); - }); - - it("should return an Error if the received argument is a string and use it as the error message", () => { - const msg = "Some error message"; - const result = getErrorFrom(msg); - - expect(result).toStrictEqual(new Error(msg)); - }); - - it("should return an Error if the received argument is an object with a message string property, and use it as the error message", () => { - const err = { message: "Some error message" }; - const result = getErrorFrom(err); - - expect(result).toStrictEqual(new Error(err.message)); - }); - - it("should return an Error otherwise using a JSON representation of the received argument as the error message", () => { - [ - 123, - new Date(), - /a/g, - { foo: "bar" }, - [1, 2, 3], - { message: 345 }, - ].forEach((arg) => { - const result = getErrorFrom(arg); - - expect(result).toStrictEqual(new Error(JSON.stringify(arg))); - }); - }); -}); diff --git a/explorer/src/lib/dusk/error/getErrorFrom.js b/explorer/src/lib/dusk/error/getErrorFrom.js deleted file mode 100644 index 0f431c90c0..0000000000 --- a/explorer/src/lib/dusk/error/getErrorFrom.js +++ /dev/null @@ -1,26 +0,0 @@ -import { - adapter, - always, - casus, - identity, - isNil, - isType, - keySatisfies, -} from "lamb"; - -/** @type {(value: any) => value is Error} */ -const isError = isType("Error"); - -/** @type {(value: any) => value is string} */ -const isString = isType("String"); - -/** @type {(value: any) => Error} */ -const getErrorFrom = adapter([ - casus(isError, identity), - casus(isNil, always(new Error("Unknown error"))), - casus(isString, (msg) => new Error(msg)), - casus(keySatisfies(isString, "message"), ({ message }) => new Error(message)), - (v) => new Error(JSON.stringify(v)), -]); - -export default getErrorFrom; diff --git a/explorer/src/lib/dusk/error/index.js b/explorer/src/lib/dusk/error/index.js deleted file mode 100644 index 95ca9246e9..0000000000 --- a/explorer/src/lib/dusk/error/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as getErrorFrom } from "./getErrorFrom"; diff --git a/explorer/src/lib/dusk/http/__tests__/failureToRejection.spec.js b/explorer/src/lib/dusk/http/__tests__/failureToRejection.spec.js deleted file mode 100644 index 223d20ffc9..0000000000 --- a/explorer/src/lib/dusk/http/__tests__/failureToRejection.spec.js +++ /dev/null @@ -1,23 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { failureToRejection } from ".."; - -describe("failureToRejection", () => { - it('should return a rejected Promise if the given Response status is not "ok"', async () => { - const response = new Response("", { status: 404 }); - const result = failureToRejection(response); - - await expect(result).rejects.toBeInstanceOf(Error); - await expect(result).rejects.toMatchObject({ - cause: response, - message: expect.stringContaining(response.statusText), - }); - }); - - it('should return a Promise that resolves to the given Response, if its status is "ok"', async () => { - const response = new Response("", { status: 200 }); - const result = failureToRejection(response); - - await expect(result).resolves.toBe(response); - }); -}); diff --git a/explorer/src/lib/dusk/http/failureToRejection.js b/explorer/src/lib/dusk/http/failureToRejection.js deleted file mode 100644 index 44586cf3f8..0000000000 --- a/explorer/src/lib/dusk/http/failureToRejection.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Transforms a Response into a Promise that resolves - * with the Response itself if its status is ok, and - * rejects with an Error otherwise. - * - * @param {Response} response - * @returns {Promise} - */ -const failureToRejection = (response) => - response.ok - ? Promise.resolve(response) - : Promise.reject( - new Error(`HTTP Request failed - ${response.statusText}`, { - cause: response, - }) - ); - -export default failureToRejection; diff --git a/explorer/src/lib/dusk/http/index.js b/explorer/src/lib/dusk/http/index.js deleted file mode 100644 index 78b5a48b66..0000000000 --- a/explorer/src/lib/dusk/http/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as failureToRejection } from "./failureToRejection"; diff --git a/explorer/src/lib/dusk/icons/index.js b/explorer/src/lib/dusk/icons/index.js deleted file mode 100644 index 905abee130..0000000000 --- a/explorer/src/lib/dusk/icons/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as duskIcon } from "./logo.js"; diff --git a/explorer/src/lib/dusk/icons/logo.js b/explorer/src/lib/dusk/icons/logo.js deleted file mode 100644 index 7b00393d6d..0000000000 --- a/explorer/src/lib/dusk/icons/logo.js +++ /dev/null @@ -1,3 +0,0 @@ -const DUSK_LOGO_PATH = - "M12.335 0.005a12.186 12.186 0 0 0 -2.58 0.204C4.2 1.259 0 6.14 0 11.999 0 17.859 4.203 22.74 9.759 23.79c0.726 0.138 1.476 0.21 2.241 0.21 6.789 0 12.261 -5.64 11.991 -12.49C23.741 5.249 18.599 0.173 12.335 0.005Zm0.207 21.58c-0.204 0.012 -0.336 -0.222 -0.21 -0.384 1.974 -2.541 3.153 -5.733 3.153 -9.202 0 -3.468 -1.176 -6.663 -3.153 -9.202 -0.126 -0.162 0.003 -0.396 0.207 -0.384 5.052 0.282 9.06 4.465 9.06 9.586 0 5.121 -4.005 9.304 -9.057 9.586Z"; -export default DUSK_LOGO_PATH; diff --git a/explorer/src/lib/dusk/mocks/IntersectionObserver.js b/explorer/src/lib/dusk/mocks/IntersectionObserver.js deleted file mode 100644 index f2c8d5272b..0000000000 --- a/explorer/src/lib/dusk/mocks/IntersectionObserver.js +++ /dev/null @@ -1,21 +0,0 @@ -export default class IntersectionObserver { - get root() { - return document; - } - - get rootMargin() { - return "0px 0px 0px 0px"; - } - - get thresholds() { - return [0]; - } - - disconnect() {} - - observe() {} - - takeRecords() {} - - unobserve() {} -} diff --git a/explorer/src/lib/dusk/mocks/MediaQueryList.js b/explorer/src/lib/dusk/mocks/MediaQueryList.js deleted file mode 100644 index 28fca92a1a..0000000000 --- a/explorer/src/lib/dusk/mocks/MediaQueryList.js +++ /dev/null @@ -1,68 +0,0 @@ -import { afterAll } from "vitest"; - -const controllers = new Set(); - -afterAll(() => { - controllers.forEach((controller) => { - controller.abort(); - controllers.delete(controller); - }); -}); - -/** - * Mocks the `MediaQueryList` object and listens to the - * "DuskMediaQueryMatchesChange" custom event. - * Fire one manually or with the `changeMediaQueryMatches` - * helper function to simulate media query changes. - */ -export default class MediaQueryList extends EventTarget { - #matches; - - #media; - - /** - * @param {string} mediaQuery - * @param {boolean} initialMatches - */ - constructor(mediaQuery, initialMatches) { - super(); - - this.#matches = initialMatches; - this.#media = mediaQuery; - - const abortController = new AbortController(); - - controllers.add(abortController); - - global.addEventListener("DuskMediaQueryMatchesChange", this, { - signal: abortController.signal, - }); - } - - get matches() { - return this.#matches; - } - - get media() { - return this.#media; - } - - /** @param {CustomEvent<{ media: string, matches: boolean }>} evt */ - handleEvent(evt) { - const { detail, type } = evt; - - if ( - type === "DuskMediaQueryMatchesChange" && - detail.media === this.#media - ) { - this.#matches = detail.matches; - - this.dispatchEvent( - new MediaQueryListEvent("change", { - matches: this.#matches, - media: this.#media, - }) - ); - } - } -} diff --git a/explorer/src/lib/dusk/mocks/MediaQueryListEvent.js b/explorer/src/lib/dusk/mocks/MediaQueryListEvent.js deleted file mode 100644 index 6f076c1137..0000000000 --- a/explorer/src/lib/dusk/mocks/MediaQueryListEvent.js +++ /dev/null @@ -1,26 +0,0 @@ -import { pickIn } from "lamb"; - -export default class MediaQueryListEvent extends Event { - #matches; - - #media; - - /** - * @param {string} type - * @param {MediaQueryListEventInit} options - */ - constructor(type, options) { - super(type, pickIn(options, ["bubbles", "cancelable", "composed"])); - - this.#matches = options.matches; - this.#media = options.media; - } - - get matches() { - return this.#matches; - } - - get media() { - return this.#media; - } -} diff --git a/explorer/src/lib/dusk/mocks/index.js b/explorer/src/lib/dusk/mocks/index.js deleted file mode 100644 index f31648fc8d..0000000000 --- a/explorer/src/lib/dusk/mocks/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as IntersectionObserver } from "./IntersectionObserver"; -export { default as MediaQueryList } from "./MediaQueryList"; -export { default as MediaQueryListEvent } from "./MediaQueryListEvent"; diff --git a/explorer/src/lib/dusk/promise/__tests__/rejectAfter.spec.js b/explorer/src/lib/dusk/promise/__tests__/rejectAfter.spec.js deleted file mode 100644 index b170546e09..0000000000 --- a/explorer/src/lib/dusk/promise/__tests__/rejectAfter.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -import { afterAll, describe, expect, it, vi } from "vitest"; - -import { rejectAfter } from ".."; - -describe("rejectAfter", () => { - vi.useFakeTimers(); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("build a promise that rejects with the given error after the chosen delay", async () => { - let result; - - const error = new Error("some error message"); - const delay = 2000; - - rejectAfter(delay, error).catch((r) => { - result = r; - }); - - await vi.advanceTimersByTimeAsync(delay / 2); - - expect(result).toBeUndefined(); - - await vi.advanceTimersByTimeAsync(delay / 2); - - expect(result).toBe(error); - }); -}); diff --git a/explorer/src/lib/dusk/promise/__tests__/resolveAfter.spec.js b/explorer/src/lib/dusk/promise/__tests__/resolveAfter.spec.js deleted file mode 100644 index 0367395ff7..0000000000 --- a/explorer/src/lib/dusk/promise/__tests__/resolveAfter.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -import { afterAll, describe, expect, it, vi } from "vitest"; - -import { resolveAfter } from ".."; - -describe("resolveAfter", () => { - vi.useFakeTimers(); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("build a promise that resolves with the given value after the chosen delay", async () => { - let result; - - const value = {}; - const delay = 2000; - - resolveAfter(delay, value).then((r) => { - result = r; - }); - - await vi.advanceTimersByTimeAsync(delay / 2); - - expect(result).toBeUndefined(); - - await vi.advanceTimersByTimeAsync(delay / 2); - - expect(result).toBe(value); - }); -}); diff --git a/explorer/src/lib/dusk/promise/index.js b/explorer/src/lib/dusk/promise/index.js deleted file mode 100644 index 11f27917e2..0000000000 --- a/explorer/src/lib/dusk/promise/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as rejectAfter } from "./rejectAfter"; -export { default as resolveAfter } from "./resolveAfter"; diff --git a/explorer/src/lib/dusk/promise/rejectAfter.js b/explorer/src/lib/dusk/promise/rejectAfter.js deleted file mode 100644 index c31a30ab1f..0000000000 --- a/explorer/src/lib/dusk/promise/rejectAfter.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {(delay: number, error: Error) => Promise} */ -const rejectAfter = (delay, error) => - new Promise((_, reject) => { - setTimeout(() => reject(error), delay); - }); - -export default rejectAfter; diff --git a/explorer/src/lib/dusk/promise/resolveAfter.js b/explorer/src/lib/dusk/promise/resolveAfter.js deleted file mode 100644 index 960d85c285..0000000000 --- a/explorer/src/lib/dusk/promise/resolveAfter.js +++ /dev/null @@ -1,7 +0,0 @@ -/** @type {(delay: number, value: any) => Promise} */ -const resolveAfter = (delay, value) => - new Promise((resolve) => { - setTimeout(() => resolve(value), delay); - }); - -export default resolveAfter; diff --git a/explorer/src/lib/dusk/string/__tests__/calculateAdaptiveCharCount.spec.js b/explorer/src/lib/dusk/string/__tests__/calculateAdaptiveCharCount.spec.js deleted file mode 100644 index 06732211bd..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/calculateAdaptiveCharCount.spec.js +++ /dev/null @@ -1,24 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { calculateAdaptiveCharCount } from "../"; - -describe("calculateAdaptiveCharCount", () => { - it("should return minimum characters for widths less than the minimum width", () => { - expect(calculateAdaptiveCharCount(300)).toBe(5); - }); - - it("should return minimum characters for width equal to the minimum width", () => { - expect(calculateAdaptiveCharCount(320, 320, 640, 5, 20)).toBe(5); - }); - - it("should return correct characters for a width between the minimum and maximum widths", () => { - expect(calculateAdaptiveCharCount(500, 320, 640, 5, 20)).toBe(13); - }); - - it("should return maximum characters for width equal to the maximum width", () => { - expect(calculateAdaptiveCharCount(800, 320, 640, 5, 20)).toBe(20); - }); - - it("should return maximum characters for widths greater than the maximum width", () => { - expect(calculateAdaptiveCharCount(900, 320, 640, 5, 20)).toBe(20); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/decodeHexString.spec.js b/explorer/src/lib/dusk/string/__tests__/decodeHexString.spec.js deleted file mode 100644 index 63fdd2d3ab..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/decodeHexString.spec.js +++ /dev/null @@ -1,51 +0,0 @@ -import { beforeEach, describe, expect, it, vi } from "vitest"; -import { decodeHexString } from ".."; - -describe("decodeHexString", () => { - const mockTextDecoder = vi - .spyOn(global, "TextDecoder") - .mockImplementation(function () { - return { - decode: vi.fn((bytes) => { - // Simulate decoding of bytes - return String.fromCharCode(...bytes); - }), - encoding: "utf-8", - fatal: false, - ignoreBOM: true, - }; - }); - - beforeEach(() => { - mockTextDecoder.mockClear(); - }); - - it("should return a decoded string for a valid hex string", () => { - expect(decodeHexString("48656c6c6f")).toBe("Hello"); - }); - - it("should return formatted JSON for a valid hex string containing JSON data", () => { - const jsonString = '{"name": "ChatGPT", "language": "JavaScript"}'; - const hexString = Buffer.from(jsonString).toString("hex"); // Convert JSON string to hex - - expect(decodeHexString(hexString)).toBe( - JSON.stringify(JSON.parse(jsonString), null, 2) - ); - }); - - it("should return the input value if it's not a valid hex string", () => { - expect(decodeHexString("invalidHex")).toBe("invalidHex"); - }); - - it("should return the decoded string even if it's not valid JSON", () => { - expect(decodeHexString("48656c6c6f21")).toBe("Hello!"); - }); - - it("should return the input value if decoded string contains invalid characters", () => { - expect(decodeHexString("F09F9880")).toBe("F09F9880"); - }); - - it("should return an empty string if the input is an empty hex string", () => { - expect(decodeHexString("")).toBe(""); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/getRelativeTimeString.spec.js b/explorer/src/lib/dusk/string/__tests__/getRelativeTimeString.spec.js deleted file mode 100644 index 892069caea..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/getRelativeTimeString.spec.js +++ /dev/null @@ -1,30 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { getRelativeTimeString } from "../"; - -describe("getRelativeTimeString", () => { - it("should return the correct relative time", () => { - const date = new Date(); - expect(getRelativeTimeString(date, "long")).toBe("now"); - - date.setDate(date.getDate() - 2); - expect(getRelativeTimeString(date, "long")).toBe("2 days ago"); - - date.setDate(date.getDate() - 7); - expect(getRelativeTimeString(date, "long")).toBe("last week"); - - date.setDate(date.getDate() - 7); - expect(getRelativeTimeString(date, "long")).toBe("2 weeks ago"); - - date.setDate(date.getDate() - 15); - expect(getRelativeTimeString(date, "long")).toBe("last month"); - - date.setDate(date.getDate() - 40); - expect(getRelativeTimeString(date, "long")).toBe("2 months ago"); - - date.setDate(date.getDate() - 300); - expect(getRelativeTimeString(date, "long")).toBe("last year"); - - date.setDate(date.getDate() - 365); - expect(getRelativeTimeString(date, "long")).toBe("2 years ago"); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/hexToBytes.spec.js b/explorer/src/lib/dusk/string/__tests__/hexToBytes.spec.js deleted file mode 100644 index 8a25eb8939..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/hexToBytes.spec.js +++ /dev/null @@ -1,31 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { hexToBytes } from ".."; - -describe("hexToBytes", () => { - it("should correctly convert a valid hex string to Uint8Array", () => { - expect(hexToBytes("a1b2")).toEqual(new Uint8Array([161, 178])); - expect(hexToBytes("0f1e")).toEqual(new Uint8Array([15, 30])); - expect(hexToBytes("0011223344")).toEqual( - new Uint8Array([0, 17, 34, 51, 68]) - ); - }); - - it("should handle uppercase hex strings correctly", () => { - expect(hexToBytes("A1B2")).toEqual(new Uint8Array([161, 178])); - expect(hexToBytes("0F1E")).toEqual(new Uint8Array([15, 30])); - }); - - it("should throw an error for odd-length hex strings", () => { - expect(() => hexToBytes("a1b")).toThrow(Error); - expect(() => hexToBytes("123")).toThrow(Error); - }); - - it("should throw an error for non-hex characters", () => { - expect(() => hexToBytes("zxy1")).toThrow(Error); - expect(() => hexToBytes("0x1g")).toThrow(Error); - }); - - it("should throw an error for an empty string", () => { - expect(() => hexToBytes("")).toThrow(Error); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/isValidHex.spec.js b/explorer/src/lib/dusk/string/__tests__/isValidHex.spec.js deleted file mode 100644 index 9f39dc2ed6..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/isValidHex.spec.js +++ /dev/null @@ -1,53 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { isValidHex } from ".."; - -describe("isValidHex", () => { - it("should return true for a valid hex string", () => { - expect( - isValidHex( - "0xce4d041b4cce091e9388391730956169691ca37496e063a6a4dbc3cfe75a889c" - ) - ).toBeTruthy(); - expect( - isValidHex( - "30786365346430343162346363653039316539333838333931373330393536" - ) - ).toBeTruthy(); - expect(isValidHex("a1b2")).toBe(true); - expect(isValidHex("A1B2")).toBe(true); - }); - - it("should return false for strings with odd number of characters", () => { - expect(isValidHex("a1b")).toBe(false); - expect(isValidHex("0x1a2")).toBe(false); - }); - - it("should return false for strings with non-hex characters", () => { - expect( - isValidHex( - "0xce4d041b4cc;./?-*|e091e938309jklmnoprst56169691ca3~!@#$%^&*()_+=7496e063a6ae75a889c" - ) - ).toBeFalsy(); - expect(isValidHex("ghijklmnoprstyuxwz")).toBeFalsy(); - expect( - isValidHex("307863653464;./?-*|393165393338~!@#$%^&*()_+=30393536") - ).toBeFalsy(); - }); - - it("should return false for invalid prefixes", () => { - expect(isValidHex("0x-1a2b")).toBe(false); - expect(isValidHex("-0y1a2b")).toBe(false); - }); - - it("should return false for empty string inputs", () => { - expect(isValidHex("")).toBe(false); - }); - - it("should return false for strings with leading or trailing spaces", () => { - expect(isValidHex(" 0x1a2b ")).toBe(false); - }); - - it("should return false for a string with only the '0x' prefix", () => { - expect(isValidHex("0x")).toBe(false); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/makeClassName.spec.js b/explorer/src/lib/dusk/string/__tests__/makeClassName.spec.js deleted file mode 100644 index f672e20f81..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/makeClassName.spec.js +++ /dev/null @@ -1,73 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { makeClassName } from ".."; - -describe("makeClassName", () => { - it('should build a class name string from the keys holding "truthy" values if given an object as parameter', () => { - const classes = { - a: "", - b: 0, - c: -0, - d: null, - e: void 0, - f: NaN, - g: false, - i: "false", - j: "0", - k: "true", - l: true, - m: "", - }; - - expect(makeClassName(classes)).toBe("i j k l"); - }); - - it('should return an empty string if the object has no keys or all values are "falsy"', () => { - const classes = { - a: "", - b: 0, - c: -0, - d: null, - e: void 0, - f: false, - g: NaN, - }; - - expect(makeClassName(classes)).toBe(""); - expect(makeClassName({})).toBe(""); - }); - - it('should build a class name string from the unique "truthy" values if given an array as parameter', () => { - const classes = [ - "", - 0, - -0, - null, - void 0, - false, - "false", - "foo", - "0", - 2, - "foo", - "false", - ]; - - expect(makeClassName(classes)).toBe("false foo 0 2"); - }); - - it('should return an empty string if the array is empty or all values are "falsy"', () => { - const classes = ["", 0, -0, null, void 0, false, NaN]; - - expect(makeClassName(classes)).toBe(""); - expect(makeClassName([])).toBe(""); - }); - - it("should throw an exception if the received parameter is `null` or `undefined`", () => { - // @ts-expect-error - expect(() => makeClassName(null)).toThrow(); - - // @ts-expect-error - expect(() => makeClassName(void 0)).toThrow(); - }); -}); diff --git a/explorer/src/lib/dusk/string/__tests__/middleEllipsis.spec.js b/explorer/src/lib/dusk/string/__tests__/middleEllipsis.spec.js deleted file mode 100644 index 22cc775649..0000000000 --- a/explorer/src/lib/dusk/string/__tests__/middleEllipsis.spec.js +++ /dev/null @@ -1,21 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { middleEllipsis } from ".."; - -describe("middleEllipsis", () => { - it("should return the original text if text length is less than or equal to twice n", () => { - expect(middleEllipsis("Hello", 5)).toEqual("Hello"); - expect(middleEllipsis("Hi", 2)).toEqual("Hi"); - }); - - it("should return text with ellipsis in the middle for longer texts", () => { - expect(middleEllipsis("HelloWorld", 3)).toEqual("Hel...rld"); - expect(middleEllipsis("abcdef", 2)).toEqual("ab...ef"); - }); - - it("should handle edge cases gracefully", () => { - expect(middleEllipsis("", 2)).toEqual(""); - expect(middleEllipsis("A", 0)).toEqual("..."); - expect(middleEllipsis("HelloWorld", 0)).toEqual("..."); - }); -}); diff --git a/explorer/src/lib/dusk/string/calculateAdaptiveCharCount.js b/explorer/src/lib/dusk/string/calculateAdaptiveCharCount.js deleted file mode 100644 index 75dca53195..0000000000 --- a/explorer/src/lib/dusk/string/calculateAdaptiveCharCount.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Calculates the number of characters to display based on the screen width, - * with adjustable parameters for minimum and maximum screen widths and character counts. - * It uses linear interpolation to determine the number of characters relative to the screen width. - * - * @param {Number} width - The current width of the screen in pixels. - * @param {Number} [minWidth=320] - The minimum screen width to consider, defaulting to 320 pixels. - * @param {Number} [maxWidth=720] - The maximum screen width to consider, defaulting to 720 pixels. - * @param {Number} [minCharacters=5] - The minimum number of characters to display, - * defaulting to 5 characters. - * @param {Number} [maxCharacters=18] - The maximum number of characters to display, - * defaulting to 18 characters. - * @returns {Number} The calculated number of characters to be displayed, - * rounded to the nearest integer. - * This value is clamped between the minimum and maximum number of characters. - * - * @example - * // if screen width is 320px - * calculateAdaptiveCharCount(320); // returns 5 - * - * @example - * // if screen width is 520px - * calculateAdaptiveCharCount(520); // returns a value between 5 and 20 - * - * @example - * // if screen width is 720px or more - * calculateAdaptiveCharCount(720); // returns 20 - * - * @example - * // using custom parameters - * calculateAdaptiveCharCount(500, 400, 800, 10, 30); // - * returns a calculated value based on custom parameters - */ - -function calculateAdaptiveCharCount( - width, - minWidth = 320, - maxWidth = 640, - minCharacters = 5, - maxCharacters = 18 -) { - const characters = - minCharacters + - ((width - minWidth) * (maxCharacters - minCharacters)) / - (maxWidth - minWidth); - - return Math.round( - Math.max(minCharacters, Math.min(characters, maxCharacters)) - ); -} - -export default calculateAdaptiveCharCount; diff --git a/explorer/src/lib/dusk/string/decodeHexString.js b/explorer/src/lib/dusk/string/decodeHexString.js deleted file mode 100644 index 024d97d9a7..0000000000 --- a/explorer/src/lib/dusk/string/decodeHexString.js +++ /dev/null @@ -1,36 +0,0 @@ -import { hexToBytes, isValidHex } from "./"; - -/** - * Decodes a hexadecimal string to utf-8 and formats it if it's a JSON string - * - * @param {string} value - * @returns {string} - */ -function decodeHexString(value) { - if (!isValidHex(value)) { - return value; - } - - const bytes = hexToBytes(value); - const decoder = new TextDecoder(); - let decodedString; - try { - decodedString = decoder.decode(bytes); - } catch { - return value; - } - - //Check whether the string contains almost all visible Unicode characters up to the end of the BMP - /* eslint-disable-next-line no-control-regex */ - if (/^[\u0000-\u007F\u00A0-\uFFFF]*$/.test(decodedString)) { - try { - return JSON.stringify(JSON.parse(decodedString), null, 2); - } catch { - return decodedString; - } - } - - return value; -} - -export default decodeHexString; diff --git a/explorer/src/lib/dusk/string/getRelativeTimeString.js b/explorer/src/lib/dusk/string/getRelativeTimeString.js deleted file mode 100644 index 732d987877..0000000000 --- a/explorer/src/lib/dusk/string/getRelativeTimeString.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @typedef {Object} TimeUnit - * @property {Number} factor - * @property {Intl.RelativeTimeFormatUnit} name - */ - -/* eslint-disable sort-keys */ - -/** @type {TimeUnit[]} */ -const units = [ - { name: "year", factor: 1000 * 60 * 60 * 24 * 365 }, - { name: "month", factor: 1000 * 60 * 60 * 24 * 30 }, - { name: "week", factor: 1000 * 60 * 60 * 24 * 7 }, - { name: "day", factor: 1000 * 60 * 60 * 24 }, - { name: "hour", factor: 1000 * 60 * 60 }, - { name: "minute", factor: 1000 * 60 }, - { name: "second", factor: 1000 }, -]; - -/* eslint-enable sort-keys */ - -/** - * @private - * @param {Number} diff - * @returns {TimeUnit} - */ -function getTimeUnit(diff) { - for (const unit of units) { - if (Math.abs(diff) >= unit.factor) { - return unit; - } - } - - return units[6]; -} - -/** - * @param {Date} date - * @param {"long" | "short" | "narrow"} style - * @return {String} - */ -function getRelativeTimeString(date, style) { - const rtf = new Intl.RelativeTimeFormat("en", { - localeMatcher: "best fit", - numeric: "auto", - style, - }); - const diff = date.getTime() - Date.now(); - const unit = getTimeUnit(diff); - - return rtf.format(Math.round(diff / unit.factor), unit.name); -} - -export default getRelativeTimeString; diff --git a/explorer/src/lib/dusk/string/hexToBytes.js b/explorer/src/lib/dusk/string/hexToBytes.js deleted file mode 100644 index bd42aa1ff0..0000000000 --- a/explorer/src/lib/dusk/string/hexToBytes.js +++ /dev/null @@ -1,22 +0,0 @@ -import { isValidHex } from "./"; - -/** - * Transform a hexadecimal string to a Uint8Array of bytes - * - * @param {string} value - * @returns {Uint8Array} - */ -const hexToBytes = (value) => { - if (!isValidHex(value)) { - throw new Error(`Given value "${value}" is not a valid hex string`); - } - - value = value.replace(/^0x/i, ""); - const bytes = new Uint8Array(value.length / 2); - for (let i = 0; i < value.length; i += 2) { - bytes[i / 2] = parseInt(value.slice(i, i + 2), 16); - } - return bytes; -}; - -export default hexToBytes; diff --git a/explorer/src/lib/dusk/string/index.js b/explorer/src/lib/dusk/string/index.js deleted file mode 100644 index e5442eb848..0000000000 --- a/explorer/src/lib/dusk/string/index.js +++ /dev/null @@ -1,7 +0,0 @@ -export { default as calculateAdaptiveCharCount } from "./calculateAdaptiveCharCount"; -export { default as decodeHexString } from "./decodeHexString"; -export { default as getRelativeTimeString } from "./getRelativeTimeString"; -export { default as hexToBytes } from "./hexToBytes"; -export { default as isValidHex } from "./isValidHex"; -export { default as makeClassName } from "./makeClassName"; -export { default as middleEllipsis } from "./middleEllipsis"; diff --git a/explorer/src/lib/dusk/string/isValidHex.js b/explorer/src/lib/dusk/string/isValidHex.js deleted file mode 100644 index c5bb13b3e6..0000000000 --- a/explorer/src/lib/dusk/string/isValidHex.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Validates whether the input is a valid hexadecimal string or number. - * - * @param {string} value - * @returns {boolean} - */ -function isValidHex(value) { - return ( - typeof value === "string" && - value.length % 2 === 0 && - /^(0x)?[0-9a-f]+$/i.test(value) - ); -} - -export default isValidHex; diff --git a/explorer/src/lib/dusk/string/makeClassName.js b/explorer/src/lib/dusk/string/makeClassName.js deleted file mode 100644 index e5288c68d0..0000000000 --- a/explorer/src/lib/dusk/string/makeClassName.js +++ /dev/null @@ -1,43 +0,0 @@ -import { - condition, - filterWith, - joinWith, - keys, - pickIf, - pipe, - uniques, -} from "lamb"; - -const joinWithSpace = joinWith(" "); - -const makeClassNameFromArray = pipe([ - filterWith(Boolean), - uniques, - joinWithSpace, -]); - -const makeClassNameFromObject = pipe([pickIf(Boolean), keys, joinWithSpace]); - -/** - * Utility function to build a CSS class name string.
- * The function accepts either an Object or an Array.
- * If you pass an object, then it should have the class names as keys. The resulting class names will be - * the keys holding "truthy" values.
- * "Falsy" values are "", 0, -0, false, - * null, NaN and undefined. - * @example - * const obj = { foo: true, bar: false, baz: true }; - * const arr = ["foo", undefined, "", "foo", "baz"]; - * - * makeClassName(obj) // => "foo baz" - * makeClassName(arr) // => "foo baz" - * makeClassName({}) // => "" - * makeClassName([]) // => "" - */ -const makeClassName = condition( - Array.isArray, - makeClassNameFromArray, - makeClassNameFromObject -); - -export default makeClassName; diff --git a/explorer/src/lib/dusk/string/middleEllipsis.js b/explorer/src/lib/dusk/string/middleEllipsis.js deleted file mode 100644 index 91699c04c1..0000000000 --- a/explorer/src/lib/dusk/string/middleEllipsis.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Used to shorten a string by replacing the middle with an ellipsis. - * @param {String} originalString - * @param {Number} charactersToDisplay - * @returns {String} - */ -function middleEllipsis(originalString, charactersToDisplay) { - if (originalString.length <= 2 * charactersToDisplay) { - return originalString; - } - - return `${originalString.substring( - 0, - charactersToDisplay - )}...${originalString.substring(originalString.length - charactersToDisplay)}`; -} - -export default middleEllipsis; diff --git a/explorer/src/lib/dusk/svelte-stores/__tests__/createDataStore.spec.js b/explorer/src/lib/dusk/svelte-stores/__tests__/createDataStore.spec.js deleted file mode 100644 index be0fd696e9..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/__tests__/createDataStore.spec.js +++ /dev/null @@ -1,351 +0,0 @@ -import { - afterAll, - afterEach, - beforeEach, - describe, - expect, - it, - vi, -} from "vitest"; -import { get } from "svelte/store"; - -import { rejectAfter, resolveAfter } from "$lib/dusk/promise"; - -import { createDataStore } from ".."; - -describe("createDataStore", () => { - const data1 = { a: 1 }; - const data2 = { a: 2 }; - const data3 = { a: 3 }; - const error = new Error("some error message"); - const args = [1, "a", new Date()]; - const dataRetriever = vi.fn().mockResolvedValue(data1); - - /** @type {DataStore} */ - let dataStore; - - vi.useFakeTimers(); - - beforeEach(() => { - dataStore = createDataStore(dataRetriever); - }); - - afterEach(() => { - dataRetriever.mockClear(); - }); - - afterAll(() => { - vi.useRealTimers(); - }); - - it("should create a readable data store and expose `getData` and `reset` as service method", () => { - expect(dataRetriever).not.toHaveBeenCalled(); - expect(dataStore).toHaveProperty("getData", expect.any(Function)); - expect(dataStore).toHaveProperty("reset", expect.any(Function)); - expect(dataStore).toHaveProperty("subscribe", expect.any(Function)); - expect(dataStore).not.toHaveProperty("set"); - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - }); - - it("should set the loading property to `true` when `getData` is called and then fill the data and set loading to `false` if the promise resolves", async () => { - const expectedState = { - data: data1, - error: null, - isLoading: false, - }; - const dataPromise = dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenCalledWith(...args); - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersToNextTimerAsync(); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - }); - - it("should set the loading property to `true` when `getData` is called and then set the error and the loading to `false` if the promise rejects", async () => { - dataRetriever.mockRejectedValueOnce(error); - - const expectedState = { - data: null, - error, - isLoading: false, - }; - const dataPromise = dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenCalledWith(...args); - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersToNextTimerAsync(); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - }); - - it("should ignore the previous call if `getData` is called while the promise is still pending", async () => { - // test the first promise as success - dataRetriever - .mockImplementationOnce(() => resolveAfter(1000, data1)) - .mockResolvedValueOnce(data2); - - /** @type {DataStoreContent} */ - let expectedState = { - data: data2, - error: null, - isLoading: false, - }; - - dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenCalledWith(...args); - - let dataPromise = dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(dataRetriever).toHaveBeenNthCalledWith(2, ...args); - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - // waiting for the first promise to resolve - await vi.advanceTimersToNextTimerAsync(); - - expect(get(dataStore)).toStrictEqual(expectedState); - - // test the first promise as failure - dataRetriever - .mockImplementationOnce(() => rejectAfter(1000, error)) - .mockResolvedValueOnce(data3); - - dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(3); - expect(dataRetriever).toHaveBeenNthCalledWith(3, ...args); - - expectedState = { - data: data3, - error: null, - isLoading: false, - }; - dataPromise = dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(4); - expect(dataRetriever).toHaveBeenNthCalledWith(4, ...args); - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - // waiting for the first promise to resolve - await vi.advanceTimersToNextTimerAsync(); - - expect(get(dataStore)).toStrictEqual(expectedState); - - // test the first promise as success and the second one as failure - dataRetriever - .mockImplementationOnce(() => resolveAfter(1000, data1)) - .mockRejectedValueOnce(error); - - dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(5); - expect(dataRetriever).toHaveBeenNthCalledWith(5, ...args); - - expectedState = { - data: null, - error, - isLoading: false, - }; - dataPromise = dataStore.getData(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(6); - expect(dataRetriever).toHaveBeenNthCalledWith(6, ...args); - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - // waiting for the first promise to resolve - await vi.advanceTimersToNextTimerAsync(); - - expect(get(dataStore)).toStrictEqual(expectedState); - }); - - it("should clear the error and leave the existing data while the promise is pending and clear the data when it ends with a failure", async () => { - dataRetriever.mockRejectedValueOnce(error); - - /** @type {DataStoreContent} */ - let expectedState = { - data: null, - error, - isLoading: false, - }; - let dataPromise = dataStore.getData(); - - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersToNextTimerAsync(); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - expectedState = { - data: data1, - error: null, - isLoading: false, - }; - dataPromise = dataStore.getData(); - - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersToNextTimerAsync(); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - dataRetriever.mockRejectedValueOnce(error); - - expectedState = { - data: null, - error, - isLoading: false, - }; - dataPromise = dataStore.getData(); - - expect(get(dataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - await vi.advanceTimersToNextTimerAsync(); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - }); - - it("should expose a `reset` method to reset the data to its initial state", async () => { - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - - await dataStore.getData(...args); - - expect(get(dataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - dataStore.reset(); - - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - - dataRetriever.mockRejectedValueOnce(error); - - await dataStore.getData(...args); - - expect(get(dataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - }); - - dataStore.reset(); - - expect(get(dataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - }); - - it("should ignore the pending promise when `reset` is called and have `getData` return the reset store", async () => { - const expectedInitialState = { - data: null, - error: null, - isLoading: false, - }; - - await dataStore.getData(...args); - - let dataPromise = dataStore.getData(...args); - - expect(get(dataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - dataStore.reset(); - - expect(await dataPromise).toStrictEqual(expectedInitialState); - expect(get(dataStore)).toStrictEqual(expectedInitialState); - - await dataStore.getData(...args); - - dataRetriever.mockRejectedValueOnce(error); - dataPromise = dataStore.getData(...args); - - expect(get(dataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - dataStore.reset(); - - expect(await dataPromise).toStrictEqual(expectedInitialState); - expect(get(dataStore)).toStrictEqual(expectedInitialState); - }); - - it("should ignore the pending promise when `reset` is called and a `getData` is called immediately afterwards and return the new result", async () => { - const expectedState = { - data: data2, - error: null, - isLoading: false, - }; - - dataRetriever - .mockImplementationOnce(() => resolveAfter(1000, data1)) - .mockResolvedValueOnce(data2); - - dataStore.getData(...args); - dataStore.reset(); - - const dataPromise = dataStore.getData(...args); - - expect(await dataPromise).toStrictEqual(expectedState); - expect(get(dataStore)).toStrictEqual(expectedState); - - // waiting for the first promise to resolve - await vi.advanceTimersToNextTimerAsync(); - - expect(get(dataStore)).toStrictEqual(expectedState); - }); -}); diff --git a/explorer/src/lib/dusk/svelte-stores/__tests__/createPollingDataStore.spec.js b/explorer/src/lib/dusk/svelte-stores/__tests__/createPollingDataStore.spec.js deleted file mode 100644 index d1fb8b0e60..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/__tests__/createPollingDataStore.spec.js +++ /dev/null @@ -1,439 +0,0 @@ -import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { get } from "svelte/store"; -import { tick } from "svelte"; - -import { createPollingDataStore } from ".."; - -describe("createPollingDataStore", () => { - const data1 = { a: 1 }; - const data2 = { a: 2 }; - const data3 = { a: 3 }; - const error = new Error("some error message"); - const args = [1, "a", new Date()]; - const dataRetriever = vi.fn().mockResolvedValue(data1); - const fetchInterval = 1000; - - const originalDocumentHidden = /** @type {PropertyDescriptor} */ ( - Object.getOwnPropertyDescriptor(Document.prototype, "hidden") - ); - - /** @param {boolean} isHidden */ - function changeDocumentHiddenTo(isHidden) { - Object.defineProperty(document, "hidden", { - configurable: true, - value: isHidden, - }); - document.dispatchEvent(new Event("visibilitychange")); - } - - /** @type {PollingDataStore} */ - let pollingDataStore; - - vi.useFakeTimers(); - - beforeEach(() => { - dataRetriever.mockClear(); - pollingDataStore = createPollingDataStore(dataRetriever, fetchInterval); - }); - - afterAll(() => { - vi.useRealTimers(); - Object.defineProperty(Document.prototype, "hidden", originalDocumentHidden); - }); - - it("should create a readable data store and expose `reset`, `start` and `stop` as service methods", () => { - expect(dataRetriever).not.toHaveBeenCalled(); - expect(pollingDataStore).toHaveProperty("reset", expect.any(Function)); - expect(pollingDataStore).toHaveProperty("start", expect.any(Function)); - expect(pollingDataStore).toHaveProperty("stop", expect.any(Function)); - expect(pollingDataStore).toHaveProperty("subscribe", expect.any(Function)); - expect(pollingDataStore).not.toHaveProperty("set"); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - }); - - it("should start polling data with the desired interval when the `start` method is called and stop when the `stop` method is called", async () => { - dataRetriever - .mockResolvedValueOnce(data1) - .mockResolvedValueOnce(data2) - .mockResolvedValueOnce(data3); - - pollingDataStore.start(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenCalledWith(...args); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - // no other call happened yet - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - vi.advanceTimersByTime(fetchInterval - 1); - await tick(); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(dataRetriever).toHaveBeenNthCalledWith(2, ...args); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - // no other call happened yet - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: false, - }); - - vi.advanceTimersByTime(fetchInterval - 1); - await tick(); - - expect(dataRetriever).toHaveBeenCalledTimes(3); - expect(dataRetriever).toHaveBeenNthCalledWith(3, ...args); - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - // no other call happened yet - expect(dataRetriever).toHaveBeenCalledTimes(3); - expect(get(pollingDataStore)).toStrictEqual({ - data: data3, - error: null, - isLoading: false, - }); - - pollingDataStore.stop(); - - vi.advanceTimersByTime(fetchInterval - 1); - await tick(); - - expect(dataRetriever).toHaveBeenCalledTimes(3); - }); - - it("should stop the polling if an error occurs during the calls", async () => { - dataRetriever.mockResolvedValueOnce(data1).mockRejectedValueOnce(error); - - pollingDataStore.start(...args); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenCalledWith(...args); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - // no other call happened yet - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - vi.advanceTimersByTime(fetchInterval - 1); - await tick(); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(dataRetriever).toHaveBeenNthCalledWith(2, ...args); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - // no other call happened yet - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - }); - }); - - it("should be able to restart polling after an error", async () => { - dataRetriever.mockResolvedValueOnce(data1).mockRejectedValueOnce(error); - - pollingDataStore.start(...args); - - await vi.advanceTimersToNextTimerAsync(); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - - pollingDataStore.start(...args); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(13); - - pollingDataStore.stop(); - }); - - it("should start a new poll process and stop the previous one when the `start` method is called and a polling is running", async () => { - dataRetriever.mockImplementation((v) => - Promise.resolve(v === 1 ? data1 : data2) - ); - - pollingDataStore.start(1); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(dataRetriever).toHaveBeenNthCalledWith(1, 1); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - }); - - pollingDataStore.start(2); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(dataRetriever).toHaveBeenNthCalledWith(2, 2); - - await vi.advanceTimersByTimeAsync(1); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(12); - - for (let i = 3; i <= 12; i++) { - expect(dataRetriever).toHaveBeenNthCalledWith(i, 2); - } - - pollingDataStore.stop(); - dataRetriever.mockResolvedValue(data1); - }); - - it("should expose a `reset` method that stops the polling and resets the store to its initial state", async () => { - const expectedInitialState = { - data: null, - error: null, - isLoading: false, - }; - - expect(get(pollingDataStore)).toStrictEqual(expectedInitialState); - - dataRetriever.mockResolvedValueOnce(data1).mockResolvedValueOnce(data2); - - pollingDataStore.start(...args); - - await vi.advanceTimersByTimeAsync(fetchInterval - 1); - - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - - pollingDataStore.reset(); - - expect(get(pollingDataStore)).toStrictEqual(expectedInitialState); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual(expectedInitialState); - - dataRetriever.mockRejectedValueOnce(error).mockResolvedValueOnce(data1); - - pollingDataStore.start(...args); - - await vi.advanceTimersByTimeAsync(fetchInterval - 1); - - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval - 1); - - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - }); - - expect(dataRetriever).toHaveBeenCalledTimes(3); - - pollingDataStore.reset(); - - expect(get(pollingDataStore)).toStrictEqual(expectedInitialState); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(3); - expect(get(pollingDataStore)).toStrictEqual(expectedInitialState); - }); - - it("should be able to restart a polling after a `reset`", async () => { - pollingDataStore.start(...args); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(11); - - pollingDataStore.reset(); - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(get(pollingDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: false, - }); - - dataRetriever.mockResolvedValueOnce(data2).mockResolvedValueOnce(data3); - pollingDataStore.start(...args); - - await vi.advanceTimersByTimeAsync(fetchInterval - 1); - - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(fetchInterval - 1); - - expect(get(pollingDataStore)).toStrictEqual({ - data: data3, - error: null, - isLoading: false, - }); - - pollingDataStore.stop(); - }); - - it("should pause the polling when the document visibility changes to hidden and resume it when it goes back to visible", async () => { - dataRetriever.mockResolvedValueOnce(data1).mockResolvedValueOnce(data2); - - pollingDataStore.start(...args); - - await vi.advanceTimersToNextTimerAsync(); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - changeDocumentHiddenTo(true); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - changeDocumentHiddenTo(false); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(1); - - expect(dataRetriever).toHaveBeenCalledTimes(2); - expect(get(pollingDataStore)).toStrictEqual({ - data: data2, - error: null, - isLoading: false, - }); - - pollingDataStore.stop(); - dataRetriever.mockResolvedValue(data1); - }); - - it("shouldn't resume the polling if `stop` is called before the document becomes hidden", async () => { - pollingDataStore.start(...args); - - await vi.advanceTimersToNextTimerAsync(); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - - pollingDataStore.stop(); - changeDocumentHiddenTo(true); - - await vi.advanceTimersByTimeAsync(fetchInterval * 10); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - - changeDocumentHiddenTo(false); - - expect(dataRetriever).toHaveBeenCalledTimes(1); - expect(get(pollingDataStore)).toStrictEqual({ - data: data1, - error: null, - isLoading: false, - }); - }); -}); diff --git a/explorer/src/lib/dusk/svelte-stores/createDataStore.js b/explorer/src/lib/dusk/svelte-stores/createDataStore.js deleted file mode 100644 index a8ea73d720..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/createDataStore.js +++ /dev/null @@ -1,78 +0,0 @@ -import { get, writable } from "svelte/store"; - -import { getErrorFrom } from "$lib/dusk/error"; - -/** - * @param {(...args: any) => Promise} dataRetriever - * @returns {DataStore} - */ -function createDataStore(dataRetriever) { - /** @type {DataStoreContent} */ - const initialState = { - data: null, - error: null, - isLoading: false, - }; - - const dataStore = writable(initialState); - const { set, subscribe, update } = dataStore; - - /** @type {number} */ - let currentRetrieveId = 0; - - /** @type {(...args: Parameters) => Promise} */ - const getData = (...args) => { - const retrieveId = ++currentRetrieveId; - - update((store) => ({ ...store, error: null, isLoading: true })); - - return dataRetriever(...args) - .then((data) => { - if (retrieveId === currentRetrieveId) { - const newStoreContent = { data, error: null, isLoading: false }; - - set(newStoreContent); - - return newStoreContent; - } else { - return get(dataStore); - } - }) - .catch( - /** @param {any} error */ - (error) => { - if (retrieveId === currentRetrieveId) { - const newStoreContent = { - data: null, - error: getErrorFrom(error), - isLoading: false, - }; - - set(newStoreContent); - - return newStoreContent; - } else { - return get(dataStore); - } - } - ); - }; - - const reset = () => { - /** - * We don't want pending promises to be written - * in the store, and we don't want id clashes - * if `getData` is called immediately after `reset`. - */ - currentRetrieveId++; - set(initialState); - }; - - return { - getData, - reset, - subscribe, - }; -} - -export default createDataStore; diff --git a/explorer/src/lib/dusk/svelte-stores/createPollingDataStore.js b/explorer/src/lib/dusk/svelte-stores/createPollingDataStore.js deleted file mode 100644 index a5ca4b1e7f..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/createPollingDataStore.js +++ /dev/null @@ -1,79 +0,0 @@ -import { derived, get } from "svelte/store"; - -import { resolveAfter } from "$lib/dusk/promise"; - -import { createDataStore } from "."; - -/** - * @param {(...args: any) => Promise} dataRetriever - * @param {number} fetchInterval - * @returns {PollingDataStore} - */ -const createPollingDataStore = (dataRetriever, fetchInterval) => { - /** @type {number} */ - let currentPollId = 0; - - /** @type {Parameters?} */ - let resumeArgs = null; - - function visibilityChangeHandler() { - if (document.hidden && resumeArgs) { - currentPollId++; - } else if (resumeArgs) { - start(...resumeArgs); - } - } - - const dataStore = createDataStore(dataRetriever); - - /** @type {(pollId: number, args: Parameters) => void} */ - const poll = (pollId, args) => { - if (pollId === currentPollId) { - dataStore - .getData(...args) - .then((store) => - store.error === null - ? resolveAfter(fetchInterval, undefined).then(() => - poll(pollId, args) - ) - : stop() - ) - .catch(stop); - } - }; - - const reset = () => { - stop(); - dataStore.reset(); - }; - - const stop = () => { - document.removeEventListener("visibilitychange", visibilityChangeHandler); - resumeArgs = null; - currentPollId++; - }; - - /** @type {(...args: Parameters) => void} */ - const start = (...args) => { - document.addEventListener("visibilitychange", visibilityChangeHandler); - resumeArgs = args; - poll(++currentPollId, args); - }; - - const pollingDataStore = derived( - dataStore, - ($dataStore, set) => { - set($dataStore); - }, - get(dataStore) - ); - - return { - reset, - start, - stop, - subscribe: pollingDataStore.subscribe, - }; -}; - -export default createPollingDataStore; diff --git a/explorer/src/lib/dusk/svelte-stores/index.js b/explorer/src/lib/dusk/svelte-stores/index.js deleted file mode 100644 index 5bb5182590..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as createDataStore } from "./createDataStore"; -export { default as createPollingDataStore } from "./createPollingDataStore"; diff --git a/explorer/src/lib/dusk/svelte-stores/svelte-stores.d.ts b/explorer/src/lib/dusk/svelte-stores/svelte-stores.d.ts deleted file mode 100644 index 1a60944ee4..0000000000 --- a/explorer/src/lib/dusk/svelte-stores/svelte-stores.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -type Readable = import("svelte/store").Readable; - -type DataStoreContent = { - data: any; - error: Error | null; - isLoading: boolean; -}; - -type DataStore = Readable & { - getData: (...args: any) => Promise; - reset: () => void; -}; - -type PollingDataStore = Readable & { - reset: () => void; - start: (...args: any) => void; - stop: (...args: any) => void; -}; diff --git a/explorer/src/lib/dusk/test-helpers/SlotContent.svelte b/explorer/src/lib/dusk/test-helpers/SlotContent.svelte deleted file mode 100644 index a3b3976962..0000000000 --- a/explorer/src/lib/dusk/test-helpers/SlotContent.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - - {text} - diff --git a/explorer/src/lib/dusk/test-helpers/__tests__/changeMediaQueryMatches.spec.js b/explorer/src/lib/dusk/test-helpers/__tests__/changeMediaQueryMatches.spec.js deleted file mode 100644 index 1c0e6a3aaa..0000000000 --- a/explorer/src/lib/dusk/test-helpers/__tests__/changeMediaQueryMatches.spec.js +++ /dev/null @@ -1,27 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { changeMediaQueryMatches } from ".."; - -describe("changeMediaQueryMatches", () => { - it('should dispatch "DuskMediaQueryMatchesChange" custom events', () => { - const media = "(max-width: 1024px)"; - const matches = true; - - /** @param {Event} evt */ - const handler = (evt) => { - expect(evt).toBeInstanceOf(CustomEvent); - expect(evt.type).toBe("DuskMediaQueryMatchesChange"); - - // @ts-ignore see https://github.com/Microsoft/TypeScript/issues/28357 - expect(evt.detail).toStrictEqual({ matches, media }); - }; - - global.addEventListener("DuskMediaQueryMatchesChange", handler); - - changeMediaQueryMatches(media, matches); - - global.removeEventListener("DuskMediaQueryMatchesChange", handler); - - expect.assertions(3); - }); -}); diff --git a/explorer/src/lib/dusk/test-helpers/changeMediaQueryMatches.js b/explorer/src/lib/dusk/test-helpers/changeMediaQueryMatches.js deleted file mode 100644 index ec0b6e16ad..0000000000 --- a/explorer/src/lib/dusk/test-helpers/changeMediaQueryMatches.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * Helper to fire "DuskMediaQueryMatchesChange" custom - * events that are listened by our `MediaQueryList` mock. - * - * @param {string} media - * @param {boolean} matches - */ -export default function changeMediaQueryMatches(media, matches) { - dispatchEvent( - new CustomEvent("DuskMediaQueryMatchesChange", { - detail: { matches, media }, - }) - ); -} diff --git a/explorer/src/lib/dusk/test-helpers/index.js b/explorer/src/lib/dusk/test-helpers/index.js deleted file mode 100644 index 1a8924b35f..0000000000 --- a/explorer/src/lib/dusk/test-helpers/index.js +++ /dev/null @@ -1,5 +0,0 @@ -export { default as changeMediaQueryMatches } from "./changeMediaQueryMatches"; -export { default as mockReadableStore } from "./mockReadableStore"; -export { default as renderWithSimpleContent } from "./renderWithSimpleContent"; -export { default as renderWithSlots } from "./renderWithSlots"; -export { default as SlotContent } from "./SlotContent.svelte"; diff --git a/explorer/src/lib/dusk/test-helpers/mockReadableStore.js b/explorer/src/lib/dusk/test-helpers/mockReadableStore.js deleted file mode 100644 index 57a8c59ee9..0000000000 --- a/explorer/src/lib/dusk/test-helpers/mockReadableStore.js +++ /dev/null @@ -1,19 +0,0 @@ -import { get, writable } from "svelte/store"; - -/** @param {*} initialValue */ -function mockReadableStore(initialValue) { - const store = writable(initialValue); - const { set, subscribe } = store; - const getMockedStoreValue = () => get(store); - - /** @param {*} value */ - const setMockedStoreValue = (value) => set(value); - - return { - getMockedStoreValue, - setMockedStoreValue, - subscribe, - }; -} - -export default mockReadableStore; diff --git a/explorer/src/lib/dusk/test-helpers/renderWithSimpleContent.js b/explorer/src/lib/dusk/test-helpers/renderWithSimpleContent.js deleted file mode 100644 index 8c3133178a..0000000000 --- a/explorer/src/lib/dusk/test-helpers/renderWithSimpleContent.js +++ /dev/null @@ -1,5 +0,0 @@ -import renderWithSlots from "./renderWithSlots"; - -const renderWithSimpleContent = renderWithSlots({ default: "some text" }); - -export default renderWithSimpleContent; diff --git a/explorer/src/lib/dusk/test-helpers/renderWithSlots.js b/explorer/src/lib/dusk/test-helpers/renderWithSlots.js deleted file mode 100644 index 24abf8a3bc..0000000000 --- a/explorer/src/lib/dusk/test-helpers/renderWithSlots.js +++ /dev/null @@ -1,36 +0,0 @@ -import { render } from "@testing-library/svelte"; - -import SlotContent from "./SlotContent.svelte"; - -/** - * @callback CreateRenderer - * @param {Parameters[0]} Component - * @param {Parameters[1]} options - * @param {Parameters[2]} [renderOptions] - * @returns {ReturnType} - */ - -/** - * @typedef {Object} DefaultSlot - * @property {String} default - */ - -/** - * @param {DefaultSlot} slots - * @returns {CreateRenderer} - */ -const renderWithSlots = (slots) => (Component, options, renderOptions) => - render( - SlotContent, - { - ...options, - props: { - Component, - componentOptions: options?.props, - text: slots.default, - }, - }, - renderOptions - ); - -export default renderWithSlots; diff --git a/explorer/src/lib/dusk/ui-helpers/__test__/handlePageClick.spec.js b/explorer/src/lib/dusk/ui-helpers/__test__/handlePageClick.spec.js deleted file mode 100644 index 16b25f24fd..0000000000 --- a/explorer/src/lib/dusk/ui-helpers/__test__/handlePageClick.spec.js +++ /dev/null @@ -1,67 +0,0 @@ -import { describe, expect, it, vi } from "vitest"; -import { handlePageClick } from "../handlePageClick"; - -describe("handlePageClick", () => { - it("calls callback on click outside the node", () => { - const node = document.createElement("div"); - const callback = vi.fn(); - - document.body.appendChild(node); - - handlePageClick(node, { callback, enabled: true }); - - document.body.click(); - expect(callback).toHaveBeenCalledTimes(1); - - document.body.removeChild(node); - }); - - it("does not call callback on click inside the node", () => { - const node = document.createElement("div"); - const callback = vi.fn(); - - document.body.appendChild(node); - - handlePageClick(node, { callback, enabled: true }); - - node.click(); - expect(callback).toHaveBeenCalledTimes(0); - - document.body.removeChild(node); - }); - - it("toggles listener activation based on enabled property", () => { - const node = document.createElement("div"); - const callback = vi.fn(); - - document.body.appendChild(node); - - const action = handlePageClick(node, { callback, enabled: false }); - - document.body.click(); - expect(callback).toHaveBeenCalledTimes(0); - - action.update({ enabled: true }); - - document.body.click(); - expect(callback).toHaveBeenCalledTimes(1); - - document.body.removeChild(node); - }); - - it("removes event listener on destroy", () => { - const node = document.createElement("div"); - const callback = vi.fn(); - - document.body.appendChild(node); - - const action = handlePageClick(node, { callback, enabled: true }); - - action.destroy(); - - document.body.click(); - expect(callback).toHaveBeenCalledTimes(0); - - document.body.removeChild(node); - }); -}); diff --git a/explorer/src/lib/dusk/ui-helpers/handlePageClick.js b/explorer/src/lib/dusk/ui-helpers/handlePageClick.js deleted file mode 100644 index 4b931dcdf4..0000000000 --- a/explorer/src/lib/dusk/ui-helpers/handlePageClick.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Action to handle clicks outside a specified node. - * - * @param {Node} node - The DOM node to monitor for outside clicks. - * @param {Object} config - Configuration object for the action. - * @param {boolean} config.enabled - Whether the outside click listener is active. - * @param {Function} config.callback - Callback to execute when an outside click is detected. - */ -export function handlePageClick(node, { enabled: initialEnabled, callback }) { - // @ts-ignore - const handleClick = (event) => { - if (node && !node.contains(event.target) && !event.defaultPrevented) { - callback(); - } - }; - - // @ts-ignore - function update({ enabled }) { - if (enabled) { - window.addEventListener("click", handleClick); - } else { - window.removeEventListener("click", handleClick); - } - } - - update({ enabled: initialEnabled }); - - return { - destroy() { - window.removeEventListener("click", handleClick); - }, - update, - }; -} diff --git a/explorer/src/lib/dusk/value/__tests__/createCompactFormatter.spec.js b/explorer/src/lib/dusk/value/__tests__/createCompactFormatter.spec.js deleted file mode 100644 index 354542b42d..0000000000 --- a/explorer/src/lib/dusk/value/__tests__/createCompactFormatter.spec.js +++ /dev/null @@ -1,11 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createCompactFormatter } from "../"; - -describe("createCompactFormatter", () => { - it("should format a number correctly", () => { - const formatter = createCompactFormatter("en"); - expect(formatter(9e5)).toBe("900.00K"); - expect(formatter(1e6)).toBe("1.00M"); - }); -}); diff --git a/explorer/src/lib/dusk/value/__tests__/createValueFormatter.spec.js b/explorer/src/lib/dusk/value/__tests__/createValueFormatter.spec.js deleted file mode 100644 index bea4d8eb61..0000000000 --- a/explorer/src/lib/dusk/value/__tests__/createValueFormatter.spec.js +++ /dev/null @@ -1,12 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { createValueFormatter } from "../"; - -describe("createValueFormatter", () => { - it("should format a number correctly", () => { - const formatter = createValueFormatter("en"); - expect(formatter(9e5)).toBe("900,000"); - expect(formatter(1e6)).toBe("1,000,000"); - expect(formatter(123456.367)).toBe("123,456.367"); - }); -}); diff --git a/explorer/src/lib/dusk/value/createCompactFormatter.js b/explorer/src/lib/dusk/value/createCompactFormatter.js deleted file mode 100644 index d2a2b66014..0000000000 --- a/explorer/src/lib/dusk/value/createCompactFormatter.js +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Creates a locale aware currency formatter for fiat or DUSK - * - * @param {String} locale A BCP 47 language tag - * @returns {(value: number | bigint) => string} - */ -const createFormatter = (locale) => { - const formatter = new Intl.NumberFormat(locale, { - compactDisplay: "short", - maximumFractionDigits: 2, - minimumFractionDigits: 2, - notation: "compact", - }); - - return (value) => formatter.format(value); -}; - -export default createFormatter; diff --git a/explorer/src/lib/dusk/value/createValueFormatter.js b/explorer/src/lib/dusk/value/createValueFormatter.js deleted file mode 100644 index 130d937282..0000000000 --- a/explorer/src/lib/dusk/value/createValueFormatter.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Creates a locale aware currency formatter for fiat or DUSK - * - * @param {String} locale A BCP 47 language tag - * @param {Number} minFractionDigits The minimum fraction digits that should display - * @param {Number} maxFractionDigits The maximum fraction digits that should display - * @returns {(value: number | bigint) => string} - */ -const createFormatter = ( - locale, - minFractionDigits = 0, - maxFractionDigits = 9 -) => { - const formatter = new Intl.NumberFormat(locale, { - maximumFractionDigits: maxFractionDigits, - minimumFractionDigits: minFractionDigits, - }); - - return (value) => formatter.format(value); -}; - -export default createFormatter; diff --git a/explorer/src/lib/dusk/value/index.js b/explorer/src/lib/dusk/value/index.js deleted file mode 100644 index 8453a4a110..0000000000 --- a/explorer/src/lib/dusk/value/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as createCompactFormatter } from "./createCompactFormatter"; -export { default as createValueFormatter } from "./createValueFormatter"; diff --git a/explorer/src/lib/market-data/MarketDataInfo.js b/explorer/src/lib/market-data/MarketDataInfo.js deleted file mode 100644 index 9c9a2f9bae..0000000000 --- a/explorer/src/lib/market-data/MarketDataInfo.js +++ /dev/null @@ -1,53 +0,0 @@ -import { compose, updateKey } from "lamb"; - -/** @returns {MarketData} */ -const jsonToMarketData = compose( - updateKey("lastUpdate", (v) => new Date(v)), - JSON.parse -); - -class MarketDataInfo { - /** @type {MarketData} */ - #data; - - /** @type {Date} */ - #lastUpdate; - - /** @param {string} json */ - static parse(json) { - const { data, lastUpdate } = jsonToMarketData(json); - - return new MarketDataInfo(data, lastUpdate); - } - - /** - * - * @param {MarketData} data - * @param {Date} lastUpdate - */ - constructor(data, lastUpdate) { - this.#data = data; - this.#lastUpdate = lastUpdate; - } - - get data() { - return this.#data; - } - - get lastUpdate() { - return this.#lastUpdate; - } - - toJSON() { - return JSON.stringify(this.toStorageData()); - } - - toStorageData() { - return { - data: this.#data, - lastUpdate: this.#lastUpdate, - }; - } -} - -export default MarketDataInfo; diff --git a/explorer/src/lib/market-data/__tests__/MarketDataInfo.spec.js b/explorer/src/lib/market-data/__tests__/MarketDataInfo.spec.js deleted file mode 100644 index 91f5905948..0000000000 --- a/explorer/src/lib/market-data/__tests__/MarketDataInfo.spec.js +++ /dev/null @@ -1,40 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { MarketDataInfo } from ".."; - -describe("MarketDataInfo", () => { - const marketData = { - currentPrice: {}, - marketCap: {}, - }; - const now = new Date(); - const marketDataInfo = new MarketDataInfo(marketData, now); - - it("should expose the market data and the last update as read-only props", () => { - expect(() => { - // @ts-expect-error - marketDataInfo.data = {}; - }).toThrow(); - - expect(() => { - // @ts-expect-error - marketDataInfo.lastUpdate = new Date(2010, 3, 4); - }).toThrow(); - - expect(marketDataInfo.data).toStrictEqual(marketData); - expect(marketDataInfo.lastUpdate).toBe(now); - }); - - it("should expose a method to convert the instance to JSON and a static method to parse it", () => { - const newMarketDataInfo = MarketDataInfo.parse(marketDataInfo.toJSON()); - - expect(newMarketDataInfo).toStrictEqual(marketDataInfo); - }); - - it("should expose a method to convert the data to the format used for storage", () => { - expect(marketDataInfo.toStorageData()).toStrictEqual({ - data: marketData, - lastUpdate: now, - }); - }); -}); diff --git a/explorer/src/lib/market-data/index.js b/explorer/src/lib/market-data/index.js deleted file mode 100644 index e25a678842..0000000000 --- a/explorer/src/lib/market-data/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as MarketDataInfo } from "./MarketDataInfo"; diff --git a/explorer/src/lib/market-data/market-data.d.ts b/explorer/src/lib/market-data/market-data.d.ts deleted file mode 100644 index a210d47d08..0000000000 --- a/explorer/src/lib/market-data/market-data.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -type MarketData = { - currentPrice: Record; - marketCap: Record; -}; - -type MarketDataStorage = { - data: MarketData; - lastUpdate: Date; -}; diff --git a/explorer/src/lib/mock-data/AccountStatus.d.ts b/explorer/src/lib/mock-data/AccountStatus.d.ts deleted file mode 100644 index 7fc18203dc..0000000000 --- a/explorer/src/lib/mock-data/AccountStatus.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -type AccountStatus = { - balance: bigint; - nonce: bigint; -}; diff --git a/explorer/src/lib/mock-data/accounts.json b/explorer/src/lib/mock-data/accounts.json deleted file mode 100644 index 2b0b5bec74..0000000000 --- a/explorer/src/lib/mock-data/accounts.json +++ /dev/null @@ -1,82 +0,0 @@ -[ - { - "address": "0xe5601aae15c846ead69dab4c86a049405", - "balance": 90993, - "staked_balance": 13802, - "active_stake": 9795, - "inactive_stake": 4007, - "rewards": 987 - }, - { - "address": "0xea8bdd8e92be744e843c644bf581455ea", - "balance": 83097, - "staked_balance": 13179, - "active_stake": 4469, - "inactive_stake": 8710, - "rewards": 3561 - }, - { - "address": "0x883c4c22510df65fe29ebf6dd0ed710f6", - "balance": 93610, - "staked_balance": 49767, - "active_stake": 39775, - "inactive_stake": 9992, - "rewards": 3616 - }, - { - "address": "0x39aae05835f723cc8a7152b63f7d73ffc", - "balance": 12804, - "staked_balance": 5582, - "active_stake": 4737, - "inactive_stake": 845, - "rewards": 4834 - }, - { - "address": "0xad36bbf36e1cca4b3997abf14f611c2de", - "balance": 92044, - "staked_balance": 9446, - "active_stake": 2944, - "inactive_stake": 6502, - "rewards": 1766 - }, - { - "address": "0xdd211bb967327a5edd05592c5e44816e8", - "balance": 84539, - "staked_balance": 79912, - "active_stake": 37637, - "inactive_stake": 42275, - "rewards": 2528 - }, - { - "address": "0x1a229291051ec42a3e8abcfb7e9400cb0f", - "balance": 61410, - "staked_balance": 1460, - "active_stake": 1324, - "inactive_stake": 136, - "rewards": 1399 - }, - { - "address": "0xdc7f07a38332a73b6d3eb456c57548509", - "balance": 35094, - "staked_balance": 7814, - "active_stake": 4616, - "inactive_stake": 3198, - "rewards": 972 - }, - { - "address": "0x156a5e0592cfba9e2d6c9fe95d6f6bbbed", - "balance": 85970, - "staked_balance": 44119, - "active_stake": 12865, - "inactive_stake": 31254, - "rewards": 4555 - }, - { - "address": "0x127de00849726e14bb7e889f42fb1cc4d5", - "balance": 32429, - "staked_balance": 26072, - "active_stake": 18899, - "inactive_stake": 7173, - "rewards": 849 - } -] diff --git a/explorer/src/lib/mock-data/api-chain-info.d.ts b/explorer/src/lib/mock-data/api-chain-info.d.ts deleted file mode 100644 index d64d5af3c2..0000000000 --- a/explorer/src/lib/mock-data/api-chain-info.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -type APISearchBlockResult = { - data: { - data: { - blocks: { - header: { hash: string }; - }[]; - }; - }; -}; - -type APISearchNoResult = { - data: {}; -}; - -type APISearchTransactionResult = { - data: { - data: { - transactions: { - __typename: string; - tx: { id: string }; - txid: string; - }[]; - }; - }; -}; - -type APISearchResult = - | APISearchBlockResult - | APISearchNoResult - | APISearchTransactionResult; diff --git a/explorer/src/lib/mock-data/api-market-data.json b/explorer/src/lib/mock-data/api-market-data.json deleted file mode 100644 index ebd4da72a4..0000000000 --- a/explorer/src/lib/mock-data/api-market-data.json +++ /dev/null @@ -1,3116 +0,0 @@ -{ - "id": "dusk-network", - "symbol": "dusk", - "name": "Dusk", - "web_slug": "dusk", - "asset_platform_id": "ethereum", - "platforms": { - "ethereum": "0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", - "energi": "0x458a9f6a008055fd79f321ea7eb3f83a6cb326e2" - }, - "detail_platforms": { - "ethereum": { - "decimal_place": 18, - "contract_address": "0x940a2db1b7008b6c776d4faaca729d6d4a4aa551" - }, - "energi": { - "decimal_place": 18, - "contract_address": "0x458a9f6a008055fd79f321ea7eb3f83a6cb326e2" - } - }, - "block_time_in_minutes": 0, - "hashing_algorithm": "Proof of Stake", - "categories": [ - "Privacy Coins", - "Smart Contract Platform", - "Layer 1 (L1)", - "Ethereum Ecosystem", - "Zero Knowledge (ZK)", - "Real World Assets (RWA)" - ], - "preview_listing": false, - "public_notice": "DUSK Network (DUSK) has rebranded to Dusk (DUSK). For more information, please view this article on their website.", - "additional_notices": [], - "localization": { - "en": "Dusk", - "de": "Dusk", - "es": "Dusk", - "fr": "Dusk", - "it": "Dusk", - "pl": "Dusk", - "ro": "Dusk", - "hu": "Dusk", - "nl": "Dusk", - "pt": "Dusk", - "sv": "Dusk", - "vi": "Dusk", - "tr": "Dusk", - "ru": "Dusk", - "ja": "Dusk", - "zh": "Dusk", - "zh-tw": "Dusk", - "ko": "Dusk", - "ar": "Dusk", - "th": "Dusk", - "id": "Dusk", - "cs": "Dusk", - "da": "Dusk", - "el": "Dusk", - "hi": "Dusk", - "no": "Dusk", - "sk": "Dusk", - "uk": "Dusk", - "he": "Dusk", - "fi": "Dusk", - "bg": "Dusk", - "hr": "Dusk", - "lt": "Dusk", - "sl": "Dusk" - }, - "description": { - "en": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "de": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "es": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "fr": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "it": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "pl": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "ro": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "hu": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "nl": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "pt": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "sv": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "vi": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "tr": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "ru": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "ja": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "zh": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "zh-tw": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "ko": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "ar": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "th": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "id": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "cs": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "da": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "el": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "hi": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "no": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "sk": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "uk": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "he": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "fi": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "bg": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "hr": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "lt": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC).", - "sl": "Dusk Network is a high throughput permissionless blockchain aimed at providing privacy, programmability and auditability.\r\nDusk Network is currently in the Testnet phase and is a blockchain protocol for easy deployment of programmable zero-knowledge dApps, thus becoming the backbone of an open, permissionless and global privacy-oriented dApp ecosystem.\r\nDusk Network aims to remove technical barriers that have undermined mainstream issuance and trading of security tokens. Compliance, auditability and privacy are built into the open, permissionless Confidential Security Token-standard (XSC)." - }, - "links": { - "homepage": ["https://dusk.network/", "", ""], - "whitepaper": "https://dusk-cms.ams3.digitaloceanspaces.com/The_Dusk_Network_Whitepaper_v3_0_0_42ac204d48.pdf", - "blockchain_site": [ - "https://etherscan.io/token/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", - "https://ethplorer.io/address/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", - "https://explorer.energi.network/token/0x458a9f6a008055fd79f321ea7eb3f83a6cb326e2", - "", - "", - "", - "", - "", - "", - "" - ], - "official_forum_url": ["", "", ""], - "chat_url": ["https://discord.com/invite/dusknetwork", "", ""], - "announcement_url": ["https://dusk.network/pages/all-posts", ""], - "twitter_screen_name": "DuskFoundation", - "facebook_username": "", - "bitcointalk_thread_identifier": null, - "telegram_channel_identifier": "DuskNetwork", - "subreddit_url": "https://www.reddit.com/r/DuskNetwork/", - "repos_url": { - "github": [ - "https://github.com/dusk-network/dusk-blockchain", - "https://github.com/dusk-network/dusk-zerocaf" - ], - "bitbucket": [] - } - }, - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - }, - "country_origin": "NL", - "genesis_date": null, - "contract_address": "0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", - "sentiment_votes_up_percentage": 100, - "sentiment_votes_down_percentage": 0, - "ico_data": { - "ico_start_date": null, - "ico_end_date": null, - "short_desc": "Dusk Network is a decentralized infrastructure focused on providing the sweet-spot between privacy and transparency in payment, communication and asset ownership transfers.", - "description": null, - "links": {}, - "softcap_currency": "USD", - "hardcap_currency": "USD", - "total_raised_currency": "USD", - "softcap_amount": "2000000.0", - "hardcap_amount": "14400000.0", - "total_raised": "8075557.0", - "quote_pre_sale_currency": "USD", - "base_pre_sale_amount": "1.0", - "quote_pre_sale_amount": "0.0404", - "quote_public_sale_currency": "USD", - "base_public_sale_amount": 1, - "quote_public_sale_amount": 0.0404, - "accepting_currencies": "ETH, BTC, USD, EUR, USDT", - "country_origin": "NL", - "pre_sale_start_date": "2018-08-01T00:00:00.000Z", - "pre_sale_end_date": "2018-11-30T00:00:00.000Z", - "whitelist_url": "", - "whitelist_start_date": null, - "whitelist_end_date": null, - "bounty_detail_url": "", - "amount_for_sale": "50000000.0", - "kyc_required": true, - "whitelist_available": false, - "pre_sale_available": true, - "pre_sale_ended": false - }, - "watchlist_portfolio_users": 27468, - "market_cap_rank": 325, - "market_data": { - "current_price": { - "aed": 1.35, - "ars": 319.83, - "aud": 0.573616, - "bch": 0.00075043, - "bdt": 40.41, - "bhd": 0.138796, - "bmd": 0.36835, - "bnb": 0.00066987, - "brl": 1.91, - "btc": 0.00000582, - "cad": 0.508229, - "chf": 0.336472, - "clp": 358.33, - "cny": 2.67, - "czk": 8.78, - "dkk": 2.59, - "dot": 0.05484136, - "eos": 0.49008492, - "eth": 0.00011927, - "eur": 0.347003, - "gbp": 0.29612, - "gel": 0.983494, - "hkd": 2.88, - "huf": 136.94, - "idr": 5954.57, - "ils": 1.38, - "inr": 30.76, - "jpy": 56.89, - "krw": 513.15, - "kwd": 0.113514, - "lkr": 110.12, - "ltc": 0.00468854, - "mmk": 773.15, - "mxn": 6.18, - "myr": 1.77, - "ngn": 442.45, - "nok": 4.04, - "nzd": 0.625366, - "php": 21, - "pkr": 102.41, - "pln": 1.5, - "rub": 34.52, - "sar": 1.38, - "sek": 4.02, - "sgd": 0.50277, - "thb": 13.51, - "try": 11.95, - "twd": 11.97, - "uah": 14.63, - "usd": 0.36835, - "vef": 0.03688286, - "vnd": 9306.36, - "xag": 0.01294522, - "xau": 0.00015517, - "xdr": 0.280918, - "xlm": 3.402263, - "xrp": 0.74336895, - "yfi": 0.00005319, - "zar": 7.02, - "bits": 5.82, - "link": 0.02705436, - "sats": 582.4 - }, - "total_value_locked": null, - "mcap_to_tvl_ratio": null, - "fdv_to_tvl_ratio": null, - "roi": { - "times": 8.11756804433127, - "currency": "usd", - "percentage": 811.756804433127 - }, - "ath": { - "aed": 4, - "ars": 583.71, - "aud": 1.5, - "bch": 0.00276833, - "bdt": 93.55, - "bhd": 0.410955, - "bmd": 1.09, - "bnb": 0.02127152, - "brl": 6.22, - "btc": 0.00006389, - "cad": 1.39, - "chf": 0.996555, - "clp": 925.75, - "cny": 6.94, - "czk": 23.95, - "dkk": 7.14, - "dot": 0.07246626, - "eos": 0.64439393, - "eth": 0.00300852, - "eur": 0.960147, - "gbp": 0.807931, - "gel": 1.84, - "hkd": 8.5, - "huf": 355.45, - "idr": 15493.52, - "ils": 3.4, - "inr": 81.19, - "jpy": 125.33, - "krw": 1292.2, - "kwd": 0.329696, - "lkr": 221.07, - "ltc": 0.00732209, - "mmk": 1938.7, - "mxn": 22.42, - "myr": 4.56, - "ngn": 965.37, - "nok": 9.58, - "nzd": 1.6, - "php": 55.66, - "pkr": 194.17, - "pln": 4.41, - "rub": 80.96, - "sar": 4.09, - "sek": 9.84, - "sgd": 1.39, - "thb": 36.5, - "try": 21.99, - "twd": 30.14, - "uah": 29.7, - "usd": 1.09, - "vef": 168549, - "vnd": 24877, - "xag": 0.04774343, - "xau": 0.00060405, - "xdr": 0.77837, - "xlm": 7.40162, - "xrp": 2.060888, - "yfi": 0.00007734, - "zar": 17.37, - "bits": 36.94, - "link": 0.12971904, - "sats": 3694.36 - }, - "ath_change_percentage": { - "aed": -66.37749, - "ars": -45.48488, - "aud": -61.98549, - "bch": -72.9908, - "bdt": -57.02262, - "bhd": -66.39744, - "bmd": -66.37291, - "bnb": -96.86767, - "brl": -69.43721, - "btc": -90.92454, - "cad": -63.70094, - "chf": -66.40244, - "clp": -61.48709, - "cny": -61.77634, - "czk": -63.51876, - "dkk": -63.90543, - "dot": -24.54935, - "eos": -24.35588, - "eth": -96.05072, - "eur": -64.02691, - "gbp": -63.50168, - "gel": -46.86977, - "hkd": -66.23995, - "huf": -61.64794, - "idr": -61.73231, - "ils": -59.52648, - "inr": -62.30899, - "jpy": -54.81442, - "krw": -60.46069, - "kwd": -65.76151, - "lkr": -50.43743, - "ltc": -36.08704, - "mmk": -60.31999, - "mxn": -72.54904, - "myr": -61.44785, - "ngn": -54.39719, - "nok": -58.05547, - "nzd": -60.98564, - "php": -62.45807, - "pkr": -47.52244, - "pln": -66.21418, - "rub": -57.57527, - "sar": -66.40207, - "sek": -59.32178, - "sgd": -63.93221, - "thb": -63.13392, - "try": -45.93071, - "twd": -60.45546, - "uah": -50.97541, - "usd": -66.37291, - "vef": -99.99998, - "vnd": -62.75421, - "xag": -72.94466, - "xau": -74.41291, - "xdr": -64.09022, - "xlm": -54.10656, - "xrp": -64.01929, - "yfi": -31.38844, - "zar": -59.78189, - "bits": -84.30498, - "link": -79.16712, - "sats": -84.30498 - }, - "ath_date": { - "aed": "2021-12-29T21:34:22.823Z", - "ars": "2024-03-28T07:00:40.794Z", - "aud": "2021-12-29T21:34:22.823Z", - "bch": "2022-01-17T15:30:02.036Z", - "bdt": "2021-12-29T21:34:22.823Z", - "bhd": "2021-12-29T21:34:22.823Z", - "bmd": "2021-12-29T21:34:22.823Z", - "bnb": "2019-07-22T07:49:23.013Z", - "brl": "2021-12-29T21:34:22.823Z", - "btc": "2019-07-22T07:49:23.013Z", - "cad": "2021-12-29T21:34:22.823Z", - "chf": "2021-12-29T21:34:22.823Z", - "clp": "2021-12-29T21:34:22.823Z", - "cny": "2021-12-29T21:34:22.823Z", - "czk": "2021-12-29T21:34:22.823Z", - "dkk": "2021-12-29T21:34:22.823Z", - "dot": "2024-03-27T19:00:26.162Z", - "eos": "2024-03-27T19:00:26.162Z", - "eth": "2019-07-22T07:49:23.013Z", - "eur": "2021-12-29T21:34:22.823Z", - "gbp": "2021-12-29T21:34:22.823Z", - "gel": "2024-03-27T18:49:53.005Z", - "hkd": "2021-12-29T21:34:22.823Z", - "huf": "2021-12-29T21:34:22.823Z", - "idr": "2021-12-29T21:34:22.823Z", - "ils": "2021-12-29T21:34:22.823Z", - "inr": "2021-12-29T21:34:22.823Z", - "jpy": "2021-12-29T21:34:22.823Z", - "krw": "2021-12-29T21:34:22.823Z", - "kwd": "2021-12-29T21:34:22.823Z", - "lkr": "2021-12-29T21:34:22.823Z", - "ltc": "2021-12-29T21:34:22.823Z", - "mmk": "2021-12-29T21:34:22.823Z", - "mxn": "2021-12-29T21:34:22.823Z", - "myr": "2021-12-29T21:34:22.823Z", - "ngn": "2024-03-28T07:00:40.794Z", - "nok": "2021-12-29T21:34:22.823Z", - "nzd": "2021-12-29T21:34:22.823Z", - "php": "2021-12-29T21:34:22.823Z", - "pkr": "2021-12-29T21:34:22.823Z", - "pln": "2021-12-29T21:34:22.823Z", - "rub": "2022-01-17T01:19:41.743Z", - "sar": "2021-12-29T21:34:22.823Z", - "sek": "2021-12-29T21:34:22.823Z", - "sgd": "2022-01-17T00:00:00.000Z", - "thb": "2021-12-29T21:34:22.823Z", - "try": "2024-03-28T07:00:40.794Z", - "twd": "2021-12-29T21:34:22.823Z", - "uah": "2021-12-29T21:34:22.823Z", - "usd": "2021-12-29T21:34:22.823Z", - "vef": "2019-07-22T07:49:23.013Z", - "vnd": "2021-12-29T21:34:22.823Z", - "xag": "2021-12-29T21:34:22.823Z", - "xau": "2021-12-29T21:34:22.823Z", - "xdr": "2021-12-29T21:34:22.823Z", - "xlm": "2019-07-22T07:49:23.013Z", - "xrp": "2019-07-22T07:49:23.013Z", - "yfi": "2024-03-27T19:00:26.162Z", - "zar": "2021-12-29T21:34:22.823Z", - "bits": "2019-07-08T00:00:00.000Z", - "link": "2019-07-09T00:00:00.000Z", - "sats": "2019-07-08T00:00:00.000Z" - }, - "atl": { - "aed": 0.04089277, - "ars": 0.698, - "aud": 0.01765686, - "bch": 0.00007184, - "bdt": 0.950012, - "bhd": 0.004199, - "bmd": 0.01113274, - "bnb": 0.00028474, - "brl": 0.053344, - "btc": 0.00000135, - "cad": 0.01550705, - "chf": 0.01053028, - "clp": 9.49, - "cny": 0.078081, - "czk": 0.261334, - "dkk": 0.074425, - "dot": 0.00311054, - "eos": 0.00680434, - "eth": 0.00003619, - "eur": 0.00995928, - "gbp": 0.00887591, - "gel": 0.391164, - "hkd": 0.086598, - "huf": 3.37, - "idr": 164.78, - "ils": 0.04106477, - "inr": 0.840522, - "jpy": 1.17, - "krw": 13.62, - "kwd": 0.00342523, - "lkr": 2.05, - "ltc": 0.00028811, - "mmk": 15.55, - "mxn": 0.24519, - "myr": 0.04776501, - "ngn": 5.22, - "nok": 0.113864, - "nzd": 0.01812904, - "php": 0.569092, - "pkr": 1.78, - "pln": 0.04368643, - "rub": 0.834003, - "sar": 0.04179063, - "sek": 0.108781, - "sgd": 0.01571375, - "thb": 0.35647, - "try": 0.070342, - "twd": 0.336687, - "uah": 0.28951, - "usd": 0.01113274, - "vef": 0.00450469, - "vnd": 259.62, - "xag": 0.00072132, - "xau": 0.00000714, - "xdr": 0.00801081, - "xlm": 0.13051577, - "xrp": 0.07335727, - "yfi": 0.00000135, - "zar": 0.184668, - "bits": 1.35, - "link": 0.00246723, - "sats": 134.89 - }, - "atl_change_percentage": { - "aed": 3191.46841, - "ars": 45489.13233, - "aud": 3135.06269, - "bch": 940.83149, - "bdt": 4132.00726, - "bhd": 3188.67543, - "bmd": 3192.14061, - "bnb": 134.00296, - "brl": 3462.70611, - "btc": 329.86453, - "cad": 3163.11712, - "chf": 3079.57457, - "clp": 3655.78836, - "cny": 3297.8481, - "czk": 3243.51179, - "dkk": 3362.36516, - "dot": 1657.7724, - "eos": 7063.75082, - "eth": 228.33663, - "eur": 3368.06854, - "gbp": 3222.26736, - "gel": 150.16848, - "hkd": 3212.8449, - "huf": 3947.45188, - "idr": 3498.18542, - "ils": 3251.13255, - "inr": 3540.71436, - "jpy": 4740.91381, - "krw": 3650.03608, - "kwd": 3195.62886, - "lkr": 5251.55464, - "ltc": 1524.29995, - "mmk": 4848.60271, - "mxn": 2410.3573, - "myr": 3578.8645, - "ngn": 8326.7838, - "nok": 3428.53654, - "nzd": 3334.28066, - "php": 3571.58042, - "pkr": 5617.61893, - "pln": 3311.55695, - "rub": 4018.58534, - "sar": 3189.71569, - "sek": 3579.46506, - "sgd": 3084.92778, - "thb": 3674.31788, - "try": 16802.64411, - "twd": 3439.78854, - "uah": 4928.90146, - "usd": 3192.14061, - "vef": 714.66671, - "vnd": 3469.00382, - "xag": 1690.75754, - "xau": 2065.94685, - "xdr": 3389.17346, - "xlm": 2502.64148, - "xrp": 910.83677, - "yfi": 3833.91244, - "zar": 3683.38615, - "bits": 329.86453, - "link": 995.3262, - "sats": 329.86453 - }, - "atl_date": { - "aed": "2020-03-13T02:24:16.885Z", - "ars": "2020-03-13T02:24:16.885Z", - "aud": "2020-03-13T02:24:16.885Z", - "bch": "2020-04-08T04:54:28.669Z", - "bdt": "2020-03-13T02:24:16.885Z", - "bhd": "2020-03-13T02:24:16.885Z", - "bmd": "2020-03-13T02:24:16.885Z", - "bnb": "2021-06-05T10:13:30.628Z", - "brl": "2020-03-13T02:24:16.885Z", - "btc": "2021-01-07T19:10:22.220Z", - "cad": "2020-03-13T02:24:16.885Z", - "chf": "2020-03-13T02:24:16.885Z", - "clp": "2020-03-13T02:24:16.885Z", - "cny": "2020-03-13T02:24:16.885Z", - "czk": "2020-03-13T02:24:16.885Z", - "dkk": "2020-03-13T02:24:16.885Z", - "dot": "2021-01-17T10:52:28.329Z", - "eos": "2020-04-23T14:24:44.649Z", - "eth": "2021-10-28T21:56:41.270Z", - "eur": "2020-03-13T02:24:16.885Z", - "gbp": "2020-03-13T02:24:16.885Z", - "gel": "2023-12-18T13:00:09.533Z", - "hkd": "2020-03-13T02:24:16.885Z", - "huf": "2020-03-13T02:24:16.885Z", - "idr": "2020-03-13T02:24:16.885Z", - "ils": "2020-03-13T02:24:16.885Z", - "inr": "2020-03-13T02:24:16.885Z", - "jpy": "2020-03-13T02:24:16.885Z", - "krw": "2020-03-13T02:24:16.885Z", - "kwd": "2020-03-13T02:24:16.885Z", - "lkr": "2020-03-13T02:24:16.885Z", - "ltc": "2021-01-04T06:48:55.900Z", - "mmk": "2020-03-13T02:24:16.885Z", - "mxn": "2020-03-13T02:24:16.885Z", - "myr": "2020-03-13T02:24:16.885Z", - "ngn": "2020-03-17T00:00:00.000Z", - "nok": "2020-03-13T02:24:16.885Z", - "nzd": "2020-03-13T02:24:16.885Z", - "php": "2020-03-13T02:24:16.885Z", - "pkr": "2020-03-13T02:24:16.885Z", - "pln": "2020-03-13T02:24:16.885Z", - "rub": "2020-03-13T02:24:16.885Z", - "sar": "2020-03-13T02:24:16.885Z", - "sek": "2020-03-13T02:24:16.885Z", - "sgd": "2020-03-13T02:24:16.885Z", - "thb": "2020-03-13T02:24:16.885Z", - "try": "2020-03-13T02:24:16.885Z", - "twd": "2020-03-13T02:24:16.885Z", - "uah": "2020-03-13T02:24:16.885Z", - "usd": "2020-03-13T02:24:16.885Z", - "vef": "2021-01-05T04:19:21.758Z", - "vnd": "2020-03-13T02:24:16.885Z", - "xag": "2020-03-13T02:24:16.885Z", - "xau": "2020-03-13T02:24:16.885Z", - "xdr": "2020-03-13T02:24:16.885Z", - "xlm": "2021-01-07T01:09:39.168Z", - "xrp": "2020-11-24T19:54:28.155Z", - "yfi": "2020-09-27T02:19:29.878Z", - "zar": "2020-03-13T02:24:16.885Z", - "bits": "2021-01-07T19:10:22.220Z", - "link": "2021-01-23T15:40:53.841Z", - "sats": "2021-01-07T19:10:22.220Z" - }, - "market_cap": { - "aed": 616985128, - "ars": 145872642453, - "aud": 261625080, - "bch": 342202, - "bdt": 18429511012, - "bhd": 63304460, - "bmd": 168003684, - "bnb": 305117, - "brl": 871132701, - "btc": 2656, - "cad": 231802243, - "chf": 153464309, - "clp": 163432303472, - "cny": 1216195467, - "czk": 4002973371, - "dkk": 1180721489, - "dot": 25014685, - "eos": 223498130, - "eth": 54373, - "eur": 158267534, - "gbp": 135059673, - "gel": 448569835, - "hkd": 1315131996, - "huf": 62457953146, - "idr": 2715870731268, - "ils": 631332811, - "inr": 14029638347, - "jpy": 25949484977, - "krw": 234045757046, - "kwd": 51773359, - "lkr": 50226241670, - "ltc": 2138497, - "mmk": 352630426878, - "mxn": 2820226933, - "myr": 805409660, - "ngn": 201800424800, - "nok": 1840767809, - "nzd": 285228254, - "php": 9576292797, - "pkr": 46707756314, - "pln": 683755168, - "rub": 15745424856, - "sar": 630218610, - "sek": 1834888856, - "sgd": 229312428, - "thb": 6162207115, - "try": 5451686104, - "twd": 5457600169, - "uah": 6673821004, - "usd": 168003684, - "vef": 16822209, - "vnd": 4244613068821, - "xag": 5904293, - "xau": 70773, - "xdr": 128125993, - "xlm": 1552480451, - "xrp": 339128094, - "yfi": 24230, - "zar": 3202976790, - "bits": 2655974567, - "link": 12342514, - "sats": 265597456683 - }, - "market_cap_rank": 325, - "fully_diluted_valuation": { - "aed": 674997378, - "ars": 159588370367, - "aud": 286224473, - "bch": 374378, - "bdt": 20162352444, - "bhd": 69256685, - "bmd": 183800291, - "bnb": 333806, - "brl": 953041268, - "btc": 2906, - "cad": 253597532, - "chf": 167893846, - "clp": 178799084858, - "cny": 1330548685, - "czk": 4379354388, - "dkk": 1291739254, - "dot": 27366700, - "eos": 244512623, - "eth": 59486, - "eur": 173148696, - "gbp": 147758708, - "gel": 490746776, - "hkd": 1438787757, - "huf": 68330584758, - "idr": 2971231458084, - "ils": 690694106, - "inr": 15348780161, - "jpy": 28389394678, - "krw": 256051993919, - "kwd": 56641368, - "lkr": 54948782190, - "ltc": 2339569, - "mmk": 385786630179, - "mxn": 3085399790, - "myr": 881138594, - "ngn": 220774782658, - "nok": 2013846668, - "nzd": 312046944, - "php": 10476707187, - "pkr": 51099469978, - "pln": 748045495, - "rub": 17225894117, - "sar": 689475143, - "sek": 2007414944, - "sgd": 250873612, - "thb": 6741610865, - "try": 5964282859, - "twd": 5970752997, - "uah": 7301329436, - "usd": 183800291, - "vef": 18403923, - "vnd": 4643714346297, - "xag": 6459446, - "xau": 77428, - "xdr": 140173086, - "xlm": 1698452987, - "xrp": 371014736, - "yfi": 26508, - "zar": 3504137840, - "bits": 2905703535, - "link": 13503023, - "sats": 290570353514 - }, - "market_cap_fdv_ratio": 0.91, - "total_volume": { - "aed": 86532688, - "ars": 20458761930, - "aud": 36693140, - "bch": 48003, - "bdt": 2584754564, - "bhd": 8878504, - "bmd": 23562659, - "bnb": 42851, - "brl": 122177101, - "btc": 372.548, - "cad": 32510461, - "chf": 21523500, - "clp": 22921519294, - "cny": 170572447, - "czk": 561420413, - "dkk": 165597191, - "dot": 3508102, - "eos": 31349835, - "eth": 7629, - "eur": 22197156, - "gbp": 18942234, - "gel": 62912300, - "hkd": 184448379, - "huf": 8759780947, - "idr": 380903175471, - "ils": 88544963, - "inr": 1967668687, - "jpy": 3639437296, - "krw": 32825116099, - "kwd": 7261258, - "lkr": 7044273030, - "ltc": 299917, - "mmk": 49456716706, - "mxn": 395539221, - "myr": 112959388, - "ngn": 28302680880, - "nok": 258169248, - "nzd": 40003505, - "php": 1343083194, - "pkr": 6550802472, - "pln": 95897243, - "rub": 2208309202, - "sar": 88388695, - "sek": 257344720, - "sgd": 32161263, - "thb": 864254779, - "try": 764603604, - "twd": 765433056, - "uah": 936009061, - "usd": 23562659, - "vef": 2359329, - "vnd": 595310586010, - "xag": 828082, - "xau": 9926.01, - "xdr": 17969779, - "xlm": 217636562, - "xrp": 47551951, - "yfi": 3403, - "zar": 449220214, - "bits": 372547913, - "link": 1730618, - "sats": 37254791319 - }, - "high_24h": { - "aed": 1.48, - "ars": 350.31, - "aud": 0.623365, - "bch": 0.00074901, - "bdt": 44.34, - "bhd": 0.152282, - "bmd": 0.404159, - "bnb": 0.00069475, - "brl": 2.07, - "btc": 0.00000607, - "cad": 0.55527, - "chf": 0.369128, - "clp": 392.39, - "cny": 2.93, - "czk": 9.6, - "dkk": 2.83, - "dot": 0.05642413, - "eos": 0.49990628, - "eth": 0.00012381, - "eur": 0.37922, - "gbp": 0.323527, - "gel": 1.079, - "hkd": 3.16, - "huf": 149.17, - "idr": 6489.93, - "ils": 1.5, - "inr": 33.72, - "jpy": 62.21, - "krw": 559.21, - "kwd": 0.124465, - "lkr": 120.61, - "ltc": 0.00492229, - "mmk": 848.46, - "mxn": 6.71, - "myr": 1.93, - "ngn": 485.46, - "nok": 4.41, - "nzd": 0.680179, - "php": 22.98, - "pkr": 112.31, - "pln": 1.63, - "rub": 37.84, - "sar": 1.52, - "sek": 4.38, - "sgd": 0.549901, - "thb": 14.83, - "try": 13.09, - "twd": 13.1, - "uah": 15.93, - "usd": 0.404159, - "vef": 0.0404684, - "vnd": 10182.88, - "xag": 0.0142181, - "xau": 0.00017167, - "xdr": 0.30473, - "xlm": 3.558684, - "xrp": 0.7791882, - "yfi": 0.00005554, - "zar": 7.67, - "bits": 6.07, - "link": 0.02779479, - "sats": 607.02 - }, - "low_24h": { - "aed": 1.27, - "ars": 301.05, - "aud": 0.538344, - "bch": 0.00069933, - "bdt": 38.04, - "bhd": 0.130671, - "bmd": 0.346728, - "bnb": 0.00063448, - "brl": 1.8, - "btc": 0.00000552, - "cad": 0.478233, - "chf": 0.316533, - "clp": 337.23, - "cny": 2.51, - "czk": 8.26, - "dkk": 2.43, - "dot": 0.05294543, - "eos": 0.47248022, - "eth": 0.00011406, - "eur": 0.326357, - "gbp": 0.278717, - "gel": 0.925763, - "hkd": 2.71, - "huf": 128.66, - "idr": 5583.46, - "ils": 1.3, - "inr": 28.96, - "jpy": 53.47, - "krw": 481.63, - "kwd": 0.106782, - "lkr": 103.66, - "ltc": 0.00452714, - "mmk": 727.76, - "mxn": 5.8, - "myr": 1.65, - "ngn": 416.48, - "nok": 3.8, - "nzd": 0.587157, - "php": 19.73, - "pkr": 96.37, - "pln": 1.4, - "rub": 32.42, - "sar": 1.3, - "sek": 3.78, - "sgd": 0.472573, - "thb": 12.73, - "try": 11.24, - "twd": 11.25, - "uah": 13.72, - "usd": 0.346728, - "vef": 0.03471786, - "vnd": 8735.9, - "xag": 0.01204272, - "xau": 0.00014583, - "xdr": 0.263322, - "xlm": 3.299157, - "xrp": 0.71447774, - "yfi": 0.00005094, - "zar": 6.58, - "bits": 5.52, - "link": 0.02602978, - "sats": 552.15 - }, - "price_change_24h": -0.032240143856508, - "price_change_percentage_24h": -8.04817, - "price_change_percentage_7d": -26.5152, - "price_change_percentage_14d": -27.4581, - "price_change_percentage_30d": 11.2603, - "price_change_percentage_60d": 11.4714, - "price_change_percentage_200d": 205.29548, - "price_change_percentage_1y": 87.49907, - "market_cap_change_24h": -14744904.379095, - "market_cap_change_percentage_24h": -8.06841, - "price_change_24h_in_currency": { - "aed": -0.118420345800472, - "ars": -27.387331698964545, - "aud": -0.044325161724802165, - "bch": 0.00003049, - "bdt": -3.5453647905353805, - "bhd": -0.01216463935131426, - "bmd": -0.032240143856507586, - "bnb": -0.000024876704034712, - "brl": -0.13901012445758387, - "btc": -2.01898511034e-7, - "cad": -0.04284396344376529, - "chf": -0.029288179010167503, - "clp": -28.09007011760849, - "cny": -0.23318933044522527, - "czk": -0.7422969267782182, - "dkk": -0.21646722422194742, - "dot": -0.001582770970613622, - "eos": -0.006471953950213273, - "eth": -0.00000433950637988, - "eur": -0.029002947375875558, - "gbp": -0.025137792696274534, - "gel": -0.0860811840968726, - "hkd": -0.2547031121854686, - "huf": -10.371740945450085, - "idr": -482.23092939692833, - "ils": -0.10907747392154254, - "inr": -2.6669969149981263, - "jpy": -4.748936225731889, - "krw": -41.29572036688637, - "kwd": -0.009846449695760276, - "lkr": -9.42671516951799, - "ltc": -0.000196122085332801, - "mmk": -67.82401505962775, - "mxn": -0.4650846335369385, - "myr": -0.14835010630896317, - "ngn": -38.7257861397224, - "nok": -0.33764656781680635, - "nzd": -0.04913465635059222, - "php": -1.757992313793732, - "pkr": -8.911613425060082, - "pln": -0.1087833512888039, - "rub": -2.933818018236664, - "sar": -0.12100113045087202, - "sek": -0.3338348367706523, - "sgd": -0.04227282706677882, - "thb": -1.201163666530265, - "try": -0.9880931066842003, - "twd": -0.9988477899150539, - "uah": -1.1617320529889614, - "usd": -0.032240143856507586, - "vef": -0.003228205604352136, - "vnd": -758.7188178141987, - "xag": -0.001101940335587947, - "xau": -0.000014887406051676, - "xdr": -0.021122055667415873, - "xlm": -0.13165071930771033, - "xrp": -0.035329856629493395, - "yfi": -0.000001593874191219, - "zar": -0.5210879791910061, - "bits": -0.2018985110340985, - "link": -0.000740436727323223, - "sats": -20.189851103409865 - }, - "price_change_percentage_1h_in_currency": { - "aed": 3.27361, - "ars": 3.2741, - "aud": 3.24854, - "bch": 1.7741, - "bdt": 3.27361, - "bhd": 3.26977, - "bmd": 3.27361, - "bnb": 2.70662, - "brl": 3.26964, - "btc": 2.70759, - "cad": 3.27331, - "chf": 3.33549, - "clp": 3.27361, - "cny": 3.28645, - "czk": 3.2697, - "dkk": 3.23179, - "dot": 1.96426, - "eos": 2.18949, - "eth": 2.39847, - "eur": 3.23799, - "gbp": 3.11929, - "gel": 3.27361, - "hkd": 3.29063, - "huf": 3.39915, - "idr": 3.211, - "ils": 3.666, - "inr": 3.30405, - "jpy": 3.36993, - "krw": 3.22226, - "kwd": 3.33061, - "lkr": 3.27361, - "ltc": 1.90222, - "mmk": 3.27361, - "mxn": 3.38537, - "myr": 3.27361, - "ngn": 3.27361, - "nok": 3.22624, - "nzd": 3.3061, - "php": 3.25548, - "pkr": 3.27361, - "pln": 3.33975, - "rub": 3.46718, - "sar": 3.27523, - "sek": 3.30845, - "sgd": 3.22997, - "thb": 3.22342, - "try": 3.32242, - "twd": 3.09463, - "uah": 3.27361, - "usd": 3.27361, - "vef": 3.27361, - "vnd": 3.27243, - "xag": 4.22451, - "xau": 3.82073, - "xdr": 3.27361, - "xlm": 1.87427, - "xrp": 2.17821, - "yfi": 1.97253, - "zar": 3.49302, - "bits": 2.70759, - "link": 1.61107, - "sats": 2.70759 - }, - "price_change_percentage_24h_in_currency": { - "aed": -8.04942, - "ars": -7.88773, - "aud": -7.17304, - "bch": 4.23542, - "bdt": -8.0664, - "bhd": -8.05817, - "bmd": -8.04817, - "bnb": -3.58066, - "brl": -6.78437, - "btc": -3.35054, - "cad": -7.77465, - "chf": -8.00748, - "clp": -7.26937, - "cny": -8.04182, - "czk": -7.79817, - "dkk": -7.71661, - "dot": -2.80513, - "eos": -1.30337, - "eth": -3.51069, - "eur": -7.71342, - "gbp": -7.82481, - "gel": -8.04817, - "hkd": -8.11636, - "huf": -7.04069, - "idr": -7.49178, - "ils": -7.30455, - "inr": -7.97854, - "jpy": -7.70388, - "krw": -7.44814, - "kwd": -7.98188, - "lkr": -7.88528, - "ltc": -4.01506, - "mmk": -8.06498, - "mxn": -6.99537, - "myr": -7.7499, - "ngn": -8.04817, - "nok": -7.7202, - "nzd": -7.2846, - "php": -7.72604, - "pkr": -8.00549, - "pln": -6.76546, - "rub": -7.83274, - "sar": -8.05192, - "sek": -7.6623, - "sgd": -7.75588, - "thb": -8.16459, - "try": -7.63539, - "twd": -7.70437, - "uah": -7.35546, - "usd": -8.04817, - "vef": -8.04817, - "vnd": -7.53813, - "xag": -7.84458, - "xau": -8.75429, - "xdr": -6.99314, - "xlm": -3.72535, - "xrp": -4.53704, - "yfi": -2.9092, - "zar": -6.90764, - "bits": -3.35054, - "link": -2.66394, - "sats": -3.35054 - }, - "price_change_percentage_7d_in_currency": { - "aed": -26.51129, - "ars": -26.16518, - "aud": -24.47674, - "bch": 0.50205, - "bdt": -26.37436, - "bhd": -26.54697, - "bmd": -26.5152, - "bnb": -22.38382, - "brl": -24.17849, - "btc": -17.86304, - "cad": -25.33566, - "chf": -25.80103, - "clp": -24.3854, - "cny": -26.46135, - "czk": -24.99905, - "dkk": -24.85547, - "dot": -2.09234, - "eos": 7.98562, - "eth": -13.41606, - "eur": -24.87342, - "gbp": -25.24695, - "gel": -26.65255, - "hkd": -26.55214, - "huf": -23.93701, - "idr": -25.26196, - "ils": -25.10836, - "inr": -26.25846, - "jpy": -25.28576, - "krw": -24.44152, - "kwd": -26.35532, - "lkr": -26.34869, - "ltc": -5.66175, - "mmk": -26.37311, - "mxn": -24.32565, - "myr": -25.8501, - "ngn": -29.5311, - "nok": -24.68346, - "nzd": -24.70619, - "php": -25.79136, - "pkr": -26.39785, - "pln": -23.86684, - "rub": -25.68875, - "sar": -26.50989, - "sek": -24.02657, - "sgd": -25.58084, - "thb": -26.28508, - "try": -25.9881, - "twd": -25.63267, - "uah": -24.94972, - "usd": -26.5152, - "vef": -26.5152, - "vnd": -25.58773, - "xag": -28.09957, - "xau": -27.41803, - "xdr": -25.51379, - "xlm": -9.59721, - "xrp": -8.61215, - "yfi": -9.89794, - "zar": -24.73905, - "bits": -17.86304, - "link": -3.92495, - "sats": -17.86304 - }, - "price_change_percentage_14d_in_currency": { - "aed": -27.45623, - "ars": -26.54764, - "aud": -26.66278, - "bch": -9.89134, - "bdt": -27.46281, - "bhd": -27.47985, - "bmd": -27.4581, - "bnb": -25.63463, - "brl": -25.59555, - "btc": -23.30461, - "cad": -26.26519, - "chf": -26.96865, - "clp": -28.39222, - "cny": -27.41599, - "czk": -26.66054, - "dkk": -26.66985, - "dot": -4.80177, - "eos": -4.26883, - "eth": -20.58095, - "eur": -26.68176, - "gbp": -26.81915, - "gel": -28.13103, - "hkd": -27.43802, - "huf": -26.68463, - "idr": -26.35398, - "ils": -25.97339, - "inr": -27.3354, - "jpy": -26.13133, - "krw": -25.31498, - "kwd": -27.36783, - "lkr": -27.78776, - "ltc": -8.56176, - "mmk": -27.4635, - "mxn": -26.72378, - "myr": -26.82465, - "ngn": -38.68057, - "nok": -27.46942, - "nzd": -26.74272, - "php": -26.6669, - "pkr": -27.41741, - "pln": -26.29426, - "rub": -26.4383, - "sar": -27.44917, - "sek": -26.6489, - "sgd": -26.83312, - "thb": -27.467, - "try": -26.73292, - "twd": -26.49989, - "uah": -26.50486, - "usd": -27.4581, - "vef": -27.4581, - "vnd": -26.23098, - "xag": -35.11484, - "xau": -31.06474, - "xdr": -26.72627, - "xlm": -11.98434, - "xrp": -12.03968, - "yfi": -12.25935, - "zar": -26.9712, - "bits": -23.30461, - "link": -2.78572, - "sats": -23.30461 - }, - "price_change_percentage_30d_in_currency": { - "aed": 11.26166, - "ars": 13.58449, - "aud": 13.7107, - "bch": -13.63035, - "bdt": 11.17243, - "bhd": 11.23225, - "bmd": 11.2603, - "bnb": 13.46919, - "brl": 15.46451, - "btc": 14.77084, - "cad": 13.46379, - "chf": 14.89848, - "clp": 14.73615, - "cny": 11.92824, - "czk": 14.76936, - "dkk": 14.1723, - "dot": 57.01321, - "eos": 42.24623, - "eth": 24.76395, - "eur": 14.1438, - "gbp": 13.87012, - "gel": 11.88889, - "hkd": 11.34913, - "huf": 14.60994, - "idr": 14.95041, - "ils": 13.58008, - "inr": 12.08951, - "jpy": 15.30009, - "krw": 16.50902, - "kwd": 11.53899, - "lkr": 8.92879, - "ltc": 17.58234, - "mmk": 11.17061, - "mxn": 11.72818, - "myr": 13.37695, - "ngn": -16.06503, - "nok": 14.88845, - "nzd": 14.94084, - "php": 14.03715, - "pkr": 10.67626, - "pln": 14.61263, - "rub": 12.92868, - "sar": 11.28572, - "sek": 17.31886, - "sgd": 13.56713, - "thb": 14.19535, - "try": 12.49376, - "twd": 14.30865, - "uah": 13.89483, - "usd": 11.2603, - "vef": 11.2603, - "vnd": 13.71864, - "xag": -1.53949, - "xau": 1.05544, - "xdr": 13.29977, - "xlm": 30.81167, - "xrp": 34.1777, - "yfi": 40.79, - "zar": 12.97703, - "bits": 14.77084, - "link": 45.51251, - "sats": 14.77084 - }, - "price_change_percentage_60d_in_currency": { - "aed": 11.45987, - "ars": 15.97439, - "aud": 13.19787, - "bch": -38.8275, - "bdt": 11.72267, - "bhd": 11.43591, - "bmd": 11.4714, - "bnb": -27.31037, - "brl": 16.2069, - "btc": -8.54802, - "cad": 14.06775, - "chf": 15.58206, - "clp": 12.05889, - "cny": 13.36629, - "czk": 12.73517, - "dkk": 13.08504, - "dot": 29.45019, - "eos": 14.84461, - "eth": 2.23909, - "eur": 13.01332, - "gbp": 12.74284, - "gel": 12.31269, - "hkd": 11.55491, - "huf": 14.54451, - "idr": 15.1733, - "ils": 15.60929, - "inr": 12.10506, - "jpy": 14.63098, - "krw": 16.28461, - "kwd": 11.538, - "lkr": 6.78757, - "ltc": -0.61628, - "mmk": 11.71769, - "mxn": 9.76739, - "myr": 11.83298, - "ngn": -10.47294, - "nok": 15.71245, - "nzd": 15.40119, - "php": 13.5268, - "pkr": 11.24195, - "pln": 12.32904, - "rub": 12.82953, - "sar": 11.5021, - "sek": 16.19111, - "sgd": 13.01453, - "thb": 13.25926, - "try": 17.41453, - "twd": 15.42466, - "uah": 17.1312, - "usd": 11.4714, - "vef": 11.4714, - "vnd": 14.92012, - "xag": -10.09891, - "xau": -5.90245, - "xdr": 12.96538, - "xlm": 19.91551, - "xrp": 27.73023, - "yfi": 26.56499, - "zar": 12.24009, - "bits": -8.54802, - "link": 64.87512, - "sats": -8.54802 - }, - "price_change_percentage_200d_in_currency": { - "aed": 205.25143, - "ars": 657.28956, - "aud": 207.93674, - "bch": 47.14676, - "bdt": 204.47528, - "bhd": 205.14809, - "bmd": 205.29548, - "bnb": 19.76147, - "brl": 214.44028, - "btc": 30.55874, - "cad": 213.01476, - "chf": 205.91303, - "clp": 228.01899, - "cny": 202.7776, - "czk": 216.84746, - "dkk": 204.70315, - "dot": 85.97779, - "eos": 133.61884, - "eth": 64.09965, - "eur": 204.55999, - "gbp": 200.48567, - "gel": 203.58992, - "hkd": 205.26935, - "huf": 207.65694, - "idr": 219.01256, - "ils": 199.75334, - "inr": 206.93191, - "jpy": 216.92931, - "krw": 215.78822, - "kwd": 204.49119, - "lkr": 182.12338, - "ltc": 155.56873, - "mmk": 205.87019, - "mxn": 194.00601, - "myr": 212.2651, - "ngn": 371.29001, - "nok": 214.23674, - "nzd": 212.609, - "php": 207.6922, - "pkr": 195.94597, - "pln": 183.88991, - "rub": 194.86033, - "sar": 205.35051, - "sek": 206.69124, - "sgd": 205.92979, - "thb": 206.85992, - "try": 260.64482, - "twd": 208.7792, - "uah": 229.13535, - "usd": 205.29548, - "vef": 205.29548, - "vnd": 216.70768, - "xag": 147.39936, - "xau": 140.52061, - "xdr": 206.04189, - "xlm": 221.31841, - "xrp": 212.69657, - "yfi": 130.57234, - "zar": 208.5636, - "bits": 30.55874, - "link": 74.39423, - "sats": 30.55874 - }, - "price_change_percentage_1y_in_currency": { - "aed": 87.50673, - "ars": 663.95977, - "aud": 95.8339, - "bch": -49.04941, - "bdt": 94.08432, - "bhd": 88.34732, - "bmd": 87.49907, - "bnb": 13.66922, - "brl": 98.01221, - "btc": -10.03878, - "cad": 91.36805, - "chf": 91.82461, - "clp": 128.73132, - "cny": 97.52958, - "czk": 110.61017, - "dkk": 94.46505, - "dot": 89.33267, - "eos": 210.10041, - "eth": 27.34317, - "eur": 96.10693, - "gbp": 87.25449, - "gel": 99.4512, - "hkd": 86.97466, - "huf": 105.15241, - "idr": 105.04609, - "ils": 91.90368, - "inr": 91.31521, - "jpy": 116.42342, - "krw": 100.25357, - "kwd": 88.74484, - "lkr": 74.25548, - "ltc": 129.55524, - "mmk": 88.18295, - "mxn": 74.7557, - "myr": 104.19594, - "ngn": 391.14878, - "nok": 97.81738, - "nzd": 97.77621, - "php": 93.09365, - "pkr": 86.35941, - "pln": 80.76825, - "rub": 115.43941, - "sar": 87.51396, - "sek": 98.21627, - "sgd": 92.36483, - "thb": 102.844, - "try": 214.28182, - "twd": 99.57758, - "uah": 102.50176, - "usd": 87.49907, - "vef": 87.49907, - "vnd": 102.01633, - "xag": 67.33535, - "xau": 58.32002, - "xdr": 94.09322, - "xlm": 84.65446, - "xrp": 96.9308, - "yfi": 147.67923, - "zar": 98.39062, - "bits": -10.03878, - "link": 11.22912, - "sats": -10.03878 - }, - "market_cap_change_24h_in_currency": { - "aed": -54159061.51641059, - "ars": -12526184756.756256, - "aud": -20278688.281909823, - "bch": 11915, - "bdt": -1621448795.123333, - "bhd": -5563431.6417720765, - "bmd": -14744904.379095018, - "bnb": -12122.801502022776, - "brl": -63608052.44413161, - "btc": -96.1373556617732, - "cad": -19596400.870092362, - "chf": -13395020.434733301, - "clp": -12850639566.288239, - "cny": -106648462.99666476, - "czk": -339516306.1333308, - "dkk": -99012048.8819263, - "dot": -767014.302391693, - "eos": -3942321.8227217793, - "eth": -2110.9760231491236, - "eur": -13265955.75503233, - "gbp": -11497567.084905148, - "gel": -39368894.69218248, - "hkd": -116484807.05180621, - "huf": -4745327328.852097, - "idr": -220591129606.91162, - "ils": -49900014.729486346, - "inr": -1219769706.001072, - "jpy": -2172172339.4365616, - "krw": -18890588391.0018, - "kwd": -4503337.50614237, - "lkr": -4311514501.816345, - "ltc": -93831.03129687393, - "mmk": -31018873051.585815, - "mxn": -212791989.90081787, - "myr": -67854468.47806978, - "ngn": -17711087648.271454, - "nok": -154439243.2357757, - "nzd": -22477970.65100974, - "php": -804102408.2976494, - "pkr": -4075751021.6369247, - "pln": -49777379.231575966, - "rub": -1341870944.8178139, - "sar": -55339325.99402201, - "sek": -152699042.00525928, - "sgd": -19335300.96617046, - "thb": -549326157.0667906, - "try": -451967195.3702183, - "twd": -456874770.08842945, - "uah": -531450158.3793974, - "usd": -14744904.379095018, - "vef": -1476407.2754788063, - "vnd": -347061158043.89453, - "xag": -504003.81248629, - "xau": -6807.1988158937165, - "xdr": -9664066.350344017, - "xlm": -63220868.03148484, - "xrp": -16808844.146733224, - "yfi": -890.8872941235568, - "zar": -238424920.93319798, - "bits": -96137355.6617732, - "link": -359758.94173844904, - "sats": -9613735566.177368 - }, - "market_cap_change_percentage_24h_in_currency": { - "aed": -8.06966, - "ars": -7.908, - "aud": -7.19348, - "bch": 3.60748, - "bdt": -8.08664, - "bhd": -8.07841, - "bmd": -8.06841, - "bnb": -3.82134, - "brl": -6.80489, - "btc": -3.49322, - "cad": -7.79495, - "chf": -8.02773, - "clp": -7.28978, - "cny": -8.06206, - "czk": -7.81847, - "dkk": -7.73693, - "dot": -2.97503, - "eos": -1.73334, - "eth": -3.73729, - "eur": -7.73374, - "gbp": -7.8451, - "gel": -8.06841, - "hkd": -8.13659, - "huf": -7.06115, - "idr": -7.51214, - "ils": -7.32496, - "inr": -7.9988, - "jpy": -7.7242, - "krw": -7.46851, - "kwd": -8.00214, - "lkr": -7.90556, - "ltc": -4.20328, - "mmk": -8.08522, - "mxn": -7.01585, - "myr": -7.77021, - "ngn": -8.06841, - "nok": -7.74051, - "nzd": -7.30501, - "php": -7.74636, - "pkr": -8.02574, - "pln": -6.78598, - "rub": -7.85303, - "sar": -8.07216, - "sek": -7.68263, - "sgd": -7.77618, - "thb": -8.18481, - "try": -7.65572, - "twd": -7.72469, - "uah": -7.37585, - "usd": -8.06841, - "vef": -8.06841, - "vnd": -7.55849, - "xag": -7.86486, - "xau": -8.77438, - "xdr": -7.01362, - "xlm": -3.91291, - "xrp": -4.72242, - "yfi": -3.54645, - "zar": -6.92813, - "bits": -3.49322, - "link": -2.83224, - "sats": -3.49322 - }, - "total_supply": 500000000, - "max_supply": 1000000000, - "circulating_supply": 457027796.316325, - "last_updated": "2024-04-16T07:13:03.305Z" - }, - "community_data": { - "facebook_likes": null, - "twitter_followers": 61111, - "reddit_average_posts_48h": 0, - "reddit_average_comments_48h": 0, - "reddit_subscribers": 0, - "reddit_accounts_active_48h": 0, - "telegram_channel_user_count": 7741 - }, - "developer_data": { - "forks": 47, - "stars": 101, - "subscribers": 23, - "total_issues": 956, - "closed_issues": 921, - "pull_requests_merged": 503, - "pull_request_contributors": 14, - "code_additions_deletions_4_weeks": { - "additions": 0, - "deletions": 0 - }, - "commit_count_4_weeks": 0, - "last_4_weeks_commit_activity_series": [] - }, - "status_updates": [ - { - "description": "Don’t miss out on the 28th $DUSK Development Update for the latest behind-the-scenes insights. ⚡️ \r\n\r\nLearn all about ABIs, stress-testing of the nodes, Inter-contract calls & intermediate states, and PLONK stability improvements.\r\n\r\nRead on: https://dusk.network/news/development-update-28 ", - "category": "general", - "created_at": "2021-03-10T16:01:15.641Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "⚡️ $DUSK swaps are now available on @Binance Bridge! \r\n\r\nEthereum-based $DUSK can now be transferred to the #Binance Smart Chain and vice versa. \r\n\r\nCompatibility with #BSC increases the utility of $DUSK through a myriad of DeFi-focused ecosystems. \r\n\r\nFind out more: https://dusk.network/news/binance-bridge-integration ", - "category": "general", - "created_at": "2021-03-05T10:32:32.176Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "We are taking the partnership with LTO Network to enhance the Dutch digital share registry to the next level: tokenization on Dusk Network.\r\n\r\nThe Dusk Network technology is set to provide thousands of companies each year with lifetime access to blockchain benefits ⛓️. \r\n\r\nRead the full story here: https://dusk.network/news/lto-dusk-tokenized-share-registry\r\n", - "category": "general", - "created_at": "2021-03-04T15:18:11.017Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "⚡️ Rabobank CBDC report highlights the importance of Dusk Network’s key design principles\r\n\r\n💡 In this article we aim to educate readers about CBDC, the challenges for blockchain to become the accepted infrastructure of choice, and how the Dusk Network is built upon the exact core-principles that may underpin future CBDCs.\r\n\r\n👉 7 min read: https://dusk.network/news/rabobank-cbdc-report", - "category": "general", - "created_at": "2021-03-03T17:04:34.240Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "Dusk Network and Binance Smart Chain integration for large scale DeFi adoption 💥\r\n\r\nThis year, Binance Smart Chain aims to build cross-chain financial infrastructure that unlocks the Internet of Value. By wrapping DUSK as BEP20 tokens on the Binance Smart Chain, the companies take their first step towards large scale adoption of DeFi applications. \r\n\r\n👉 https://dusk.network/news/binance-smart-chain-integration ", - "category": "general", - "created_at": "2021-03-02T15:17:13.424Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "💥 Dusk Network Whitepaper V3 release\r\n\r\n⚙️ The updated whitepaper includes the latest advancements and specifications of Dusk Network: a privacy-preserving blockchain for smart contracts, financial applications, and regulated decentralized finance.\r\n\r\n📆 Important stepping stone for Dusk Network as we move closer towards the upcoming E2E Release Candidate (save-the-date: April 9th, 2021)\r\n\r\n👉 Go straight to Whitepaper V3: https://dusk.network/uploads/The_Dusk_Network_Whitepaper_v3_0_0.pdf", - "category": "general", - "created_at": "2021-03-01T16:03:30.732Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - }, - { - "description": "Dusk Network is always on the look-out for talented 🧠 team members in the realms of technology, business development, and marketing.\r\n\r\nToday, we’d like to shine a brief spotlight💡 on two of the most recent additions to the Dusk Network family and our Research & Development department: Errol & Marta!\r\n\r\n👉 https://dusk.network/news/dusk-network-expands-research-development-team \r\n\r\n", - "category": "general", - "created_at": "2021-02-24T17:24:38.576Z", - "user": "Mels Dees", - "user_title": "Co-Founder & Marketing Lead", - "pin": false, - "project": { - "type": "Coin", - "id": "dusk-network", - "name": "Dusk", - "symbol": "dusk", - "image": { - "thumb": "https://assets.coingecko.com/coins/images/5217/thumb/image_widget_biddfvxd454b1.png?1696505726", - "small": "https://assets.coingecko.com/coins/images/5217/small/image_widget_biddfvxd454b1.png?1696505726", - "large": "https://assets.coingecko.com/coins/images/5217/large/image_widget_biddfvxd454b1.png?1696505726" - } - } - } - ], - "last_updated": "2024-04-16T07:13:03.305Z", - "tickers": [ - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "WEEX", - "identifier": "weex", - "has_trading_incentive": false - }, - "last": 0.3677, - "volume": 2538443, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011902, - "usd": 0.367804 - }, - "converted_volume": { - "btc": 14.986608, - "eth": 306.75, - "usd": 947904 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.027159, - "timestamp": "2024-04-16T07:10:53+00:00", - "last_traded_at": "2024-04-16T07:10:53+00:00", - "last_fetch_at": "2024-04-16T07:10:53+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.weex.com/trade/dusk_usdt", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Binance", - "identifier": "binance", - "has_trading_incentive": false - }, - "last": 0.3671, - "volume": 18569271, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011885, - "usd": 0.367232 - }, - "converted_volume": { - "btc": 109.19, - "eth": 2235, - "usd": 6906789 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.054481, - "timestamp": "2024-04-16T07:09:04+00:00", - "last_traded_at": "2024-04-16T07:09:04+00:00", - "last_fetch_at": "2024-04-16T07:11:02+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.binance.com/en/trade/DUSK_USDT?ref=37754157", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "TokoCrypto", - "identifier": "toko_crypto", - "has_trading_incentive": false - }, - "last": 0.3679, - "volume": 62475.28295732536, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011909, - "usd": 0.368004 - }, - "converted_volume": { - "btc": 0.36349602, - "eth": 7.440139, - "usd": 22991 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.054481, - "timestamp": "2024-04-16T07:10:27+00:00", - "last_traded_at": "2024-04-16T07:10:27+00:00", - "last_fetch_at": "2024-04-16T07:10:27+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.tokocrypto.com/trade/DUSKUSDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Bitget", - "identifier": "bitget", - "has_trading_incentive": false - }, - "last": 0.36721, - "volume": 1132580, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011889, - "usd": 0.367342 - }, - "converted_volume": { - "btc": 6.718, - "eth": 137.531, - "usd": 424947 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.117045, - "timestamp": "2024-04-16T07:11:09+00:00", - "last_traded_at": "2024-04-16T07:11:09+00:00", - "last_fetch_at": "2024-04-16T07:11:09+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.bitget.com/spot/DUSKUSDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "BingX", - "identifier": "bingx", - "has_trading_incentive": false - }, - "last": 0.3683, - "volume": 1134085.799573, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011924, - "usd": 0.368433 - }, - "converted_volume": { - "btc": 6.676942, - "eth": 136.691, - "usd": 422350 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.108962, - "timestamp": "2024-04-16T07:11:15+00:00", - "last_traded_at": "2024-04-16T07:11:15+00:00", - "last_fetch_at": "2024-04-16T07:11:15+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://bingx.com/en-us/spot/DUSKUSDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Gate.io", - "identifier": "gate", - "has_trading_incentive": false - }, - "last": 0.36711, - "volume": 1596976.2880635, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011886, - "usd": 0.367242 - }, - "converted_volume": { - "btc": 9.297206, - "eth": 190.333, - "usd": 588095 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.179602, - "timestamp": "2024-04-16T07:10:32+00:00", - "last_traded_at": "2024-04-16T07:10:32+00:00", - "last_fetch_at": "2024-04-16T07:11:13+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://gate.io/trade/DUSK_USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "HTX", - "identifier": "huobi", - "has_trading_incentive": false - }, - "last": 0.3678, - "volume": 24858301.23914042, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011908, - "usd": 0.367933 - }, - "converted_volume": { - "btc": 145.421, - "eth": 2977, - "usd": 9198636 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.163177, - "timestamp": "2024-04-16T07:11:23+00:00", - "last_traded_at": "2024-04-16T07:11:23+00:00", - "last_fetch_at": "2024-04-16T07:11:23+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.huobi.com/en-us/exchange/dusk_usdt", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "EUR", - "market": { - "name": "Bitvavo", - "identifier": "bitvavo", - "has_trading_incentive": false - }, - "last": 0.34671, - "volume": 779359.20602014, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011908, - "usd": 0.368099 - }, - "converted_volume": { - "btc": 4.534746, - "eth": 92.807, - "usd": 286881 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.187477, - "timestamp": "2024-04-16T07:08:37+00:00", - "last_traded_at": "2024-04-16T07:08:37+00:00", - "last_fetch_at": "2024-04-16T07:08:37+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://account.bitvavo.com/markets/DUSK-EUR", - "token_info_url": null, - "coin_id": "dusk-network" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "KuCoin", - "identifier": "kucoin", - "has_trading_incentive": false - }, - "last": 0.36701, - "volume": 1433844.4672, - "converted_last": { - "btc": 0.0000058, - "eth": 0.0001188, - "usd": 0.367114 - }, - "converted_volume": { - "btc": 8.322266, - "eth": 170.342, - "usd": 526384 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.120009, - "timestamp": "2024-04-16T07:10:27+00:00", - "last_traded_at": "2024-04-16T07:10:27+00:00", - "last_fetch_at": "2024-04-16T07:10:27+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.kucoin.com/trade/DUSK-USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "BTC", - "market": { - "name": "Binance", - "identifier": "binance", - "has_trading_incentive": false - }, - "last": 0.00000581, - "volume": 1214014, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011904, - "usd": 0.367127 - }, - "converted_volume": { - "btc": 7.0784, - "eth": 145.023, - "usd": 447275 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.344828, - "timestamp": "2024-04-16T07:05:03+00:00", - "last_traded_at": "2024-04-16T07:05:03+00:00", - "last_fetch_at": "2024-04-16T07:05:03+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.binance.com/en/trade/DUSK_BTC?ref=37754157", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bitcoin" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "MEXC", - "identifier": "mxc", - "has_trading_incentive": false - }, - "last": 0.36692, - "volume": 842769.6, - "converted_last": { - "btc": 0.0000058, - "eth": 0.00011877, - "usd": 0.367024 - }, - "converted_volume": { - "btc": 4.890372, - "eth": 100.098, - "usd": 309316 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.133246, - "timestamp": "2024-04-16T07:10:07+00:00", - "last_traded_at": "2024-04-16T07:10:07+00:00", - "last_fetch_at": "2024-04-16T07:10:07+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.mexc.com/exchange/DUSK_USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "AscendEX (BitMax)", - "identifier": "bitmax", - "has_trading_incentive": false - }, - "last": 0.36586, - "volume": 397738, - "converted_last": { - "btc": 0.00000579, - "eth": 0.00011845, - "usd": 0.365992 - }, - "converted_volume": { - "btc": 2.301302, - "eth": 47.112324, - "usd": 145569 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.199133, - "timestamp": "2024-04-16T07:10:06+00:00", - "last_traded_at": "2024-04-16T07:10:06+00:00", - "last_fetch_at": "2024-04-16T07:11:07+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://ascendex.com/en/cashtrade-spottrading/usdt/dusk", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Hotcoin Global", - "identifier": "hotcoin_global", - "has_trading_incentive": false - }, - "last": 0.3671, - "volume": 1078032, - "converted_last": { - "btc": 0.00000581, - "eth": 0.0001188, - "usd": 0.36732 - }, - "converted_volume": { - "btc": 6.258607, - "eth": 128.076, - "usd": 395982 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.758397, - "timestamp": "2024-04-16T07:09:59+00:00", - "last_traded_at": "2024-04-16T07:09:59+00:00", - "last_fetch_at": "2024-04-16T07:09:59+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.hotcoin.com/currencyExchange/dusk_usdt", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "XRP", - "market": { - "name": "Bitrue", - "identifier": "bitrue", - "has_trading_incentive": false - }, - "last": 0.7417, - "volume": 2217226.66, - "converted_last": { - "btc": 0.0000058, - "eth": 0.0001188, - "usd": 0.367124 - }, - "converted_volume": { - "btc": 12.869509, - "eth": 263.417, - "usd": 813997 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 1.098754, - "timestamp": "2024-04-16T07:10:35+00:00", - "last_traded_at": "2024-04-16T07:10:35+00:00", - "last_fetch_at": "2024-04-16T07:10:35+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.bitrue.com/trade/dusk_xrp", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "ripple" - }, - { - "base": "DUSK", - "target": "USD", - "market": { - "name": "Bitfinex", - "identifier": "bitfinex", - "has_trading_incentive": false - }, - "last": 0.36855, - "volume": 113270.48623731, - "converted_last": { - "btc": 0.00000583, - "eth": 0.00011929, - "usd": 0.368579 - }, - "converted_volume": { - "btc": 0.66001255, - "eth": 13.511795, - "usd": 41749 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.325027, - "timestamp": "2024-04-16T07:07:02+00:00", - "last_traded_at": "2024-04-16T07:07:02+00:00", - "last_fetch_at": "2024-04-16T07:11:04+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://trading.bitfinex.com/t/DUSK:USD?type=exchange", - "token_info_url": null, - "coin_id": "dusk-network" - }, - { - "base": "0XB2BD0749DBE21F623D9BABA856D3B0F0E1BFEC9C", - "target": "WBNB", - "market": { - "name": "PancakeSwap (v2)", - "identifier": "pancakeswap_new", - "has_trading_incentive": false - }, - "last": 0.000669209397765875, - "volume": 322446.837207692, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011913, - "usd": 0.368123 - }, - "converted_volume": { - "btc": 1.861868, - "eth": 38.109241, - "usd": 117763 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.603233, - "timestamp": "2024-04-16T07:10:43+00:00", - "last_traded_at": "2024-04-16T07:10:43+00:00", - "last_fetch_at": "2024-04-16T07:10:43+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://pancakeswap.finance/swap?inputCurrency=0xb2bd0749dbe21f623d9baba856d3b0f0e1bfec9c&outputCurrency=wbnb", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "wbnb" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Bitrue", - "identifier": "bitrue", - "has_trading_incentive": false - }, - "last": 0.3672, - "volume": 3018798, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011884, - "usd": 0.36742 - }, - "converted_volume": { - "btc": 17.530664, - "eth": 358.746, - "usd": 1109166 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 1.62206, - "timestamp": "2024-04-16T07:09:33+00:00", - "last_traded_at": "2024-04-16T07:09:33+00:00", - "last_fetch_at": "2024-04-16T07:09:33+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.bitrue.com/trade/dusk_usdt", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDC", - "market": { - "name": "Bitrue", - "identifier": "bitrue", - "has_trading_incentive": false - }, - "last": 0.3677, - "volume": 2179263, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011899, - "usd": 0.367711 - }, - "converted_volume": { - "btc": 12.669378, - "eth": 259.32, - "usd": 801339 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.757781, - "timestamp": "2024-04-16T07:10:35+00:00", - "last_traded_at": "2024-04-16T07:10:35+00:00", - "last_fetch_at": "2024-04-16T07:10:35+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.bitrue.com/trade/dusk_usdc", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "usd-coin" - }, - { - "base": "DUSK", - "target": "ETH", - "market": { - "name": "Gate.io", - "identifier": "gate", - "has_trading_incentive": false - }, - "last": 0.00011873, - "volume": 26243.6520148703, - "converted_last": { - "btc": 0.0000058, - "eth": 0.00011864, - "usd": 0.366576 - }, - "converted_volume": { - "btc": 0.15168199, - "eth": 3.105238, - "usd": 9594.64 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.4271, - "timestamp": "2024-04-16T07:10:31+00:00", - "last_traded_at": "2024-04-16T07:10:31+00:00", - "last_fetch_at": "2024-04-16T07:11:13+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://gate.io/trade/DUSK_ETH", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "ethereum" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "LATOKEN", - "identifier": "latoken", - "has_trading_incentive": false - }, - "last": 0.36812631, - "volume": 19201.05192586452, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011918, - "usd": 0.368259 - }, - "converted_volume": { - "btc": 0.111785, - "eth": 2.288466, - "usd": 7070.96 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.228011, - "timestamp": "2024-04-16T07:11:19+00:00", - "last_traded_at": "2024-04-16T07:11:19+00:00", - "last_fetch_at": "2024-04-16T07:11:19+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://latoken.com/exchange/USDT-DUSK", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Cryptology", - "identifier": "cryptology", - "has_trading_incentive": false - }, - "last": 0.3665, - "volume": 29608.58430667, - "converted_last": { - "btc": 0.0000058, - "eth": 0.00011861, - "usd": 0.366719 - }, - "converted_volume": { - "btc": 0.17161422, - "eth": 3.511896, - "usd": 10858.04 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.489396, - "timestamp": "2024-04-16T07:09:18+00:00", - "last_traded_at": "2024-04-16T07:09:18+00:00", - "last_fetch_at": "2024-04-16T07:09:18+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://cryptology.com/app/next/trading/DUSK_USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "BNT", - "market": { - "name": "Bancor (V2)", - "identifier": "bancor", - "has_trading_incentive": false - }, - "last": 0.443286246604661, - "volume": 3033.44746094734, - "converted_last": { - "btc": 0.00000488, - "eth": 0.00009979, - "usd": 0.30848 - }, - "converted_volume": { - "btc": 0.01479154, - "eth": 0.30271911, - "usd": 935.76 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.613008, - "timestamp": "2024-04-16T07:01:10+00:00", - "last_traded_at": "2024-04-16T07:01:10+00:00", - "last_fetch_at": "2024-04-16T07:08:38+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://app.bancor.network/trade?inputCurrency=dusk&outputCurrency=bnt", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bancor" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "CoinEx", - "identifier": "coinex", - "has_trading_incentive": false - }, - "last": 0.367, - "volume": 30095.94802705, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011881, - "usd": 0.367285 - }, - "converted_volume": { - "btc": 0.17625736, - "eth": 3.607125, - "usd": 11150.5 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 0.947482, - "timestamp": "2024-04-16T07:07:32+00:00", - "last_traded_at": "2024-04-16T07:07:32+00:00", - "last_fetch_at": "2024-04-16T07:07:32+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.coinex.com/trading?currency=USDT&dest=DUSK#limit", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Koinpark", - "identifier": "koinpark", - "has_trading_incentive": false - }, - "last": 0.3679, - "volume": 4109.434165, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011909, - "usd": 0.368004 - }, - "converted_volume": { - "btc": 0.02390966, - "eth": 0.48938972, - "usd": 1512.29 - }, - "trust_score": "green", - "bid_ask_spread_percentage": 3.038964, - "timestamp": "2024-04-16T07:10:55+00:00", - "last_traded_at": "2024-04-16T07:10:55+00:00", - "last_fetch_at": "2024-04-16T07:10:55+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.koinpark.com/trade/DUSK-USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Nominex", - "identifier": "nominex", - "has_trading_incentive": false - }, - "last": 0.3684, - "volume": 20641.897937024973, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011927, - "usd": 0.368129 - }, - "converted_volume": { - "btc": 0.1202335, - "eth": 2.461922, - "usd": 7598.87 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 0.052659, - "timestamp": "2024-04-16T06:55:48+00:00", - "last_traded_at": "2024-04-16T06:55:48+00:00", - "last_fetch_at": "2024-04-16T06:55:48+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://nominex.io/en/markets/DUSK/USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "CoinTR Pro", - "identifier": "cointr", - "has_trading_incentive": false - }, - "last": 0.3678, - "volume": 39189, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011906, - "usd": 0.367904 - }, - "converted_volume": { - "btc": 0.23002521, - "eth": 4.708221, - "usd": 14549.11 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 0.298265, - "timestamp": "2024-04-16T07:10:47+00:00", - "last_traded_at": "2024-04-16T07:10:47+00:00", - "last_fetch_at": "2024-04-16T07:10:47+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.cointr.com/en-us/spot/DUSK_USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "BTC", - "market": { - "name": "TokoCrypto", - "identifier": "toko_crypto", - "has_trading_incentive": false - }, - "last": 0.00000582, - "volume": 58.697594502, - "converted_last": { - "btc": 0.00000582, - "eth": 0.00011911, - "usd": 0.36819 - }, - "converted_volume": { - "btc": 0.00034162, - "eth": 0.00699149, - "usd": 21.61 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 0.172117, - "timestamp": "2024-04-16T07:08:43+00:00", - "last_traded_at": "2024-04-16T07:08:43+00:00", - "last_fetch_at": "2024-04-16T07:08:43+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.tokocrypto.com/trade/DUSKBTC", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bitcoin" - }, - { - "base": "DUSK", - "target": "BTC", - "market": { - "name": "Nominex", - "identifier": "nominex", - "has_trading_incentive": false - }, - "last": 0.00000581, - "volume": 1960.376936317, - "converted_last": { - "btc": 0.00000581, - "eth": 0.00011895, - "usd": 0.366979 - }, - "converted_volume": { - "btc": 0.01138979, - "eth": 0.23318543, - "usd": 719.42 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 0.367647, - "timestamp": "2024-04-16T06:50:47+00:00", - "last_traded_at": "2024-04-16T06:50:47+00:00", - "last_fetch_at": "2024-04-16T06:50:47+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://nominex.io/en/markets/DUSK/BTC", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bitcoin" - }, - { - "base": "DUSK", - "target": "IDR", - "market": { - "name": "Bittime", - "identifier": "bittime", - "has_trading_incentive": false - }, - "last": 5976, - "volume": 683.6, - "converted_last": { - "btc": 0.00000584, - "eth": 0.00011956, - "usd": 0.369591 - }, - "converted_volume": { - "btc": 0.0040211, - "eth": 0.08229229, - "usd": 254.39 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 1.26183, - "timestamp": "2024-04-16T07:07:58+00:00", - "last_traded_at": "2024-04-16T07:07:58+00:00", - "last_fetch_at": "2024-04-16T07:07:58+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.bittime.com/en/trade/DUSK-IDR", - "token_info_url": null, - "coin_id": "dusk-network" - }, - { - "base": "DUSK", - "target": "BRL", - "market": { - "name": "NovaDAX", - "identifier": "novadax", - "has_trading_incentive": false - }, - "last": 1.89248, - "volume": 3254.92, - "converted_last": { - "btc": 0.00000577, - "eth": 0.00011811, - "usd": 0.364977 - }, - "converted_volume": { - "btc": 0.01878214, - "eth": 0.38443817, - "usd": 1187.97 - }, - "trust_score": "yellow", - "bid_ask_spread_percentage": 1.447385, - "timestamp": "2024-04-16T02:50:26+00:00", - "last_traded_at": "2024-04-16T02:50:26+00:00", - "last_fetch_at": "2024-04-16T07:10:24+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://www.novadax.com/product/orderbook?pair=DUSK_BRL", - "token_info_url": null, - "coin_id": "dusk-network" - }, - { - "base": "0XC581B735A1688071A1746C968E0798D642EDE491", - "target": "0X940A2DB1B7008B6C776D4FAACA729D6D4A4AA551", - "market": { - "name": "Uniswap V3 (Ethereum)", - "identifier": "uniswap_v3", - "has_trading_incentive": false - }, - "last": 2.77683438954474, - "volume": 11358.555032, - "converted_last": { - "btc": 0.00000571, - "eth": 0.00011681, - "usd": 0.361147 - }, - "converted_volume": { - "btc": 0.17619901, - "eth": 3.605719, - "usd": 11148.12 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.605038, - "timestamp": "2024-04-16T07:02:43+00:00", - "last_traded_at": "2024-04-16T07:02:43+00:00", - "last_fetch_at": "2024-04-16T07:09:52+00:00", - "is_anomaly": false, - "is_stale": false, - "trade_url": "https://app.uniswap.org/#/swap?inputCurrency=0xc581b735a1688071a1746c968e0798d642ede491&outputCurrency=0x940a2db1b7008b6c776d4faaca729d6d4a4aa551", - "token_info_url": null, - "coin_id": "tether-eurt", - "target_coin_id": "dusk-network" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "FMFW.io", - "identifier": "bitcoin_com", - "has_trading_incentive": false - }, - "last": 0.35557, - "volume": 293.1, - "converted_last": { - "btc": 0.00000562, - "eth": 0.00011511, - "usd": 0.355553 - }, - "converted_volume": { - "btc": 0.00164866, - "eth": 0.03373792, - "usd": 104.21 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.062604, - "timestamp": "2024-04-16T03:26:52+00:00", - "last_traded_at": "2024-04-16T03:26:52+00:00", - "last_fetch_at": "2024-04-16T07:06:47+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://fmfw.io/DUSK-to-USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "HitBTC", - "identifier": "hitbtc", - "has_trading_incentive": false - }, - "last": 0.35557, - "volume": 293.1, - "converted_last": { - "btc": 0.00000562, - "eth": 0.0001151, - "usd": 0.35567 - }, - "converted_volume": { - "btc": 0.00179527, - "eth": 0.03674612, - "usd": 113.55 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.122546, - "timestamp": "2024-04-16T03:26:42+00:00", - "last_traded_at": "2024-04-16T03:26:42+00:00", - "last_fetch_at": "2024-04-16T07:10:29+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://hitbtc.com/DUSK-to-USDT", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "BTC", - "market": { - "name": "FMFW.io", - "identifier": "bitcoin_com", - "has_trading_incentive": false - }, - "last": 0.000005631, - "volume": 244.24, - "converted_last": { - "btc": 0.00000563, - "eth": 0.00011523, - "usd": 0.355939 - }, - "converted_volume": { - "btc": 0.00137532, - "eth": 0.02814424, - "usd": 86.93 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.171851, - "timestamp": "2024-04-16T01:09:53+00:00", - "last_traded_at": "2024-04-16T01:09:53+00:00", - "last_fetch_at": "2024-04-16T07:06:47+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://fmfw.io/DUSK-to-BTC", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bitcoin" - }, - { - "base": "DUSK", - "target": "BTC", - "market": { - "name": "HitBTC", - "identifier": "hitbtc", - "has_trading_incentive": false - }, - "last": 0.000005631, - "volume": 244.24, - "converted_last": { - "btc": 0.00000563, - "eth": 0.00011526, - "usd": 0.356161 - }, - "converted_volume": { - "btc": 0.00144252, - "eth": 0.02952582, - "usd": 91.24 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.206505, - "timestamp": "2024-04-16T01:06:27+00:00", - "last_traded_at": "2024-04-16T01:06:27+00:00", - "last_fetch_at": "2024-04-16T07:10:11+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://hitbtc.com/DUSK-to-BTC", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "bitcoin" - }, - { - "base": "0X940A2DB1B7008B6C776D4FAACA729D6D4A4AA551", - "target": "0XDAC17F958D2EE523A2206206994597C13D831EC7", - "market": { - "name": "Uniswap V3 (Ethereum)", - "identifier": "uniswap_v3", - "has_trading_incentive": false - }, - "last": 0.36618226342531, - "volume": 988640.467674595, - "converted_last": { - "btc": 0.00000571, - "eth": 0.00011681, - "usd": 0.361147 - }, - "converted_volume": { - "btc": 5.707073, - "eth": 116.789, - "usd": 361087 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.603147, - "timestamp": "2024-04-16T07:09:50+00:00", - "last_traded_at": "2024-04-16T07:09:50+00:00", - "last_fetch_at": "2024-04-16T07:09:50+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://app.uniswap.org/#/swap?inputCurrency=0x940a2db1b7008b6c776d4faaca729d6d4a4aa551&outputCurrency=0xdac17f958d2ee523a2206206994597c13d831ec7", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "0X940A2DB1B7008B6C776D4FAACA729D6D4A4AA551", - "target": "0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2", - "market": { - "name": "Uniswap V3 (Ethereum)", - "identifier": "uniswap_v3", - "has_trading_incentive": false - }, - "last": 0.000116943747218566, - "volume": 458.357245626918, - "converted_last": { - "btc": 0.00000565, - "eth": 0.00011569, - "usd": 0.357689 - }, - "converted_volume": { - "btc": 0.00267337, - "eth": 0.05470748, - "usd": 169.14 - }, - "trust_score": null, - "bid_ask_spread_percentage": 0.763871, - "timestamp": "2024-04-16T06:27:45+00:00", - "last_traded_at": "2024-04-16T06:27:45+00:00", - "last_fetch_at": "2024-04-16T07:09:52+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://app.uniswap.org/#/swap?inputCurrency=0x940a2db1b7008b6c776d4faaca729d6d4a4aa551&outputCurrency=ETH", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "weth" - }, - { - "base": "DUSK", - "target": "INR", - "market": { - "name": "Koinpark", - "identifier": "koinpark", - "has_trading_incentive": false - }, - "last": 32.89026, - "volume": 4748.855209, - "converted_last": { - "btc": 0.00000623, - "eth": 0.00012743, - "usd": 0.393906 - }, - "converted_volume": { - "btc": 0.02956884, - "eth": 0.60512928, - "usd": 1870.6 - }, - "trust_score": null, - "bid_ask_spread_percentage": 3.077864, - "timestamp": "2024-04-16T07:07:51+00:00", - "last_traded_at": "2024-04-16T07:07:51+00:00", - "last_fetch_at": "2024-04-16T07:07:51+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": "https://www.koinpark.com/trade/DUSK-INR", - "token_info_url": null, - "coin_id": "dusk-network" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "WazirX", - "identifier": "wazirx", - "has_trading_incentive": false - }, - "last": 0.4711, - "volume": 1208.6, - "converted_last": { - "btc": 0.00000745, - "eth": 0.00015252, - "usd": 0.47127 - }, - "converted_volume": { - "btc": 0.00900445, - "eth": 0.18433942, - "usd": 569.58 - }, - "trust_score": null, - "bid_ask_spread_percentage": 34.352442, - "timestamp": "2024-04-16T06:07:56+00:00", - "last_traded_at": "2024-04-16T06:07:56+00:00", - "last_fetch_at": "2024-04-16T07:11:38+00:00", - "is_anomaly": true, - "is_stale": false, - "trade_url": null, - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - }, - { - "base": "DUSK", - "target": "USDT", - "market": { - "name": "Poloniex", - "identifier": "poloniex", - "has_trading_incentive": false - }, - "last": 0.2921, - "volume": 49.321, - "converted_last": { - "btc": 0.00000447, - "eth": 0.00009229, - "usd": 0.291763 - }, - "converted_volume": { - "btc": 0.00022063, - "eth": 0.00455099, - "usd": 14.39 - }, - "trust_score": null, - "bid_ask_spread_percentage": 52.445285, - "timestamp": "2024-04-14T21:58:33+00:00", - "last_traded_at": "2024-04-14T21:58:33+00:00", - "last_fetch_at": "2024-04-14T22:27:56+00:00", - "is_anomaly": true, - "is_stale": true, - "trade_url": "https://poloniex.com/trade/DUSK_USDT/?type=spot", - "token_info_url": null, - "coin_id": "dusk-network", - "target_coin_id": "tether" - } - ] -} diff --git a/explorer/src/lib/mock-data/api-node-info.json b/explorer/src/lib/mock-data/api-node-info.json deleted file mode 100644 index 6106b5aeec..0000000000 --- a/explorer/src/lib/mock-data/api-node-info.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "bootstrapping_nodes": [ - "nocturne-20241011-100-2-node-0.testnet.dusk:9000", - "nocturne-20241011-100-2-node-1.testnet.dusk:9000" - ], - "chain_id": 2, - "kadcast_address": "64.225.3.119:9000", - "version": "0.8.0", - "version_build": "0.8.0 (8a9df55 2024-10-14)" -} diff --git a/explorer/src/lib/mock-data/api-node-locations.json b/explorer/src/lib/mock-data/api-node-locations.json deleted file mode 100644 index 6d23ac0eb7..0000000000 --- a/explorer/src/lib/mock-data/api-node-locations.json +++ /dev/null @@ -1,618 +0,0 @@ -[ - { - "city": "Alexandria", - "country": "Australia", - "countryCode": "AU", - "lat": -33.9088, - "lon": 151.196 - }, - { - "city": "Milan", - "country": "Italy", - "countryCode": "IT", - "lat": 45.4722, - "lon": 9.1922 - }, - { - "city": "Sydney", - "country": "Australia", - "countryCode": "AU", - "lat": -33.808, - "lon": 151.1415 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.3891, - "lon": 4.6563 - }, - { - "city": "Nuremberg", - "country": "Germany", - "countryCode": "DE", - "lat": 49.405, - "lon": 11.1617 - }, - { - "city": "Nuremberg", - "country": "Germany", - "countryCode": "DE", - "lat": 49.405, - "lon": 11.1617 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.3891, - "lon": 4.6563 - }, - { - "city": "Nuremberg", - "country": "Germany", - "countryCode": "DE", - "lat": 49.4527, - "lon": 11.0783 - }, - { - "city": "Hillsboro", - "country": "United States", - "countryCode": "US", - "lat": 45.5397, - "lon": -122.9638 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "St Louis", - "country": "United States", - "countryCode": "US", - "lat": 38.6364, - "lon": -90.1985 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Slough", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 51.5368, - "lon": -0.6718 - }, - { - "city": "Helsinki", - "country": "Finland", - "countryCode": "FI", - "lat": 60.1797, - "lon": 24.9344 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1103, - "lon": 8.7147 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Seattle", - "country": "United States", - "countryCode": "US", - "lat": 47.3066, - "lon": -122.2619 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Limerick", - "country": "Ireland", - "countryCode": "IE", - "lat": 52.6669, - "lon": -8.6274 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002 - }, - { - "city": "Falkenstein", - "country": "Germany", - "countryCode": "DE", - "lat": 50.4777, - "lon": 12.3649 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Helsinki", - "country": "Finland", - "countryCode": "FI", - "lat": 60.1797, - "lon": 24.9344 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Paris", - "country": "France", - "countryCode": "FR", - "lat": 48.8323, - "lon": 2.4075 - }, - { - "city": "Newcastle upon Tyne", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 54.9958, - "lon": -1.6897 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Sneek", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 53.0366, - "lon": 5.6858 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Nuremberg", - "country": "Germany", - "countryCode": "DE", - "lat": 49.405, - "lon": 11.1617 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962 - }, - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247 - } -] diff --git a/explorer/src/lib/mock-data/api-stats.json b/explorer/src/lib/mock-data/api-stats.json deleted file mode 100644 index bbe785936f..0000000000 --- a/explorer/src/lib/mock-data/api-stats.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "tps": 12, - "hostlist": 23, - "activeProvisioners": 945, - "activeStake": 58226174026663410, - "waitingProvisioners": 34, - "waitingStake": 2573278329709436, - "lastBlock": 487596, - "txCount": { - "public": 13742, - "shielded": 2621, - "total": 16363 - } -} diff --git a/explorer/src/lib/mock-data/enriched-provisioners.json b/explorer/src/lib/mock-data/enriched-provisioners.json deleted file mode 100644 index 2906632f47..0000000000 --- a/explorer/src/lib/mock-data/enriched-provisioners.json +++ /dev/null @@ -1,3426 +0,0 @@ -[ - { - "amount": 1000000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "n3qToJrMkYCnUkJkFG2a7fEVn2Krj6arVUfuQbZNRk4gcDPQ9jESngvKQGZ4XToGAhS4qFsGzJtiZzDJ5E9TyYA5SZcCJGYfi5cZWBJkzmAmwiScS256TCMZZjmEq6aNuj6", - "locked_amt": 0, - "reward": 12178759788262, - "owner": { - "Account": "n3qToJrMkYCnUkJkFG2a7fEVn2Krj6arVUfuQbZNRk4gcDPQ9jESngvKQGZ4XToGAhS4qFsGzJtiZzDJ5E9TyYA5SZcCJGYfi5cZWBJkzmAmwiScS256TCMZZjmEq6aNuj6" - }, - "rank": 1, - "ownerType": "Account", - "ownerAddress": "n3qToJrMkYCnUkJkFG2a7fEVn2Krj6arVUfuQbZNRk4gcDPQ9jESngvKQGZ4XToGAhS4qFsGzJtiZzDJ5E9TyYA5SZcCJGYfi5cZWBJkzmAmwiScS256TCMZZjmEq6aNuj6", - "hasSeparateOwner": false - }, - { - "amount": 510000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "s9mQHPDuKiUwomr7k6S3mmeqd8rwpXENtvmCY7f9ndukC4VQH385ePgzHdiw6vWoJX7ee1oZEFSYXXZtVr4326XmZrkTbranxdYz89Vrd1HMfX2f3uis4hi33XxiM4ksRbH", - "locked_amt": 0, - "reward": 780152437445, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 2, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 505000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "sX4JooVNAFov3Xx9cfZHtRemijsggdRKrywC14jfGyZn5k2wupNvyY9ZLu7YTuh3CpuyKsftbmzYPzdgptG6Rq9UayDXeaPwFHanmXpUqGdTyEvw5Cb3UqGEqfCFZMqQhtz", - "locked_amt": 0, - "reward": 2063426446466, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 3, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 504000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "scRkV9xaMCNTsjEx2mwDABavD5exRSNAyCnTZT9hYi2HGKPRAYhqzff5BmdsXgqaYRxgSxkyiDUBFiyHGhuHxMC2R5ztdmG8QUe6jBXsyFMJoGx6H9faXfyA2XwXrJMpbfo", - "locked_amt": 0, - "reward": 5190546947071, - "owner": { - "Account": "scRkV9xaMCNTsjEx2mwDABavD5exRSNAyCnTZT9hYi2HGKPRAYhqzff5BmdsXgqaYRxgSxkyiDUBFiyHGhuHxMC2R5ztdmG8QUe6jBXsyFMJoGx6H9faXfyA2XwXrJMpbfo" - }, - "rank": 4, - "ownerType": "Account", - "ownerAddress": "scRkV9xaMCNTsjEx2mwDABavD5exRSNAyCnTZT9hYi2HGKPRAYhqzff5BmdsXgqaYRxgSxkyiDUBFiyHGhuHxMC2R5ztdmG8QUe6jBXsyFMJoGx6H9faXfyA2XwXrJMpbfo", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "m6dy2gz3jC3ifLpZmdTaZbgcptWxRrfnQEZ8hG8ewhopKXTcCTnTqs4UeucXFkcSuFMfTqMzT1Go6KfNkuFvJPvsrvp5vKxEccuJNUgMi1uSCne1ti5kgYeNHtW82FWtnpf", - "locked_amt": 0, - "reward": 7121257296087, - "owner": { - "Account": "m6dy2gz3jC3ifLpZmdTaZbgcptWxRrfnQEZ8hG8ewhopKXTcCTnTqs4UeucXFkcSuFMfTqMzT1Go6KfNkuFvJPvsrvp5vKxEccuJNUgMi1uSCne1ti5kgYeNHtW82FWtnpf" - }, - "rank": 5, - "ownerType": "Account", - "ownerAddress": "m6dy2gz3jC3ifLpZmdTaZbgcptWxRrfnQEZ8hG8ewhopKXTcCTnTqs4UeucXFkcSuFMfTqMzT1Go6KfNkuFvJPvsrvp5vKxEccuJNUgMi1uSCne1ti5kgYeNHtW82FWtnpf", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "m9dVuRgr3CQX5P5Fxh2t68QRhRFBZFWroUM9Do77Xusc6ZuJHfj4xhPokm62bFXw8WrA2Lq7dkJcFSEGHKBvVxJ2TmZBJKBBjzhEXtCP7UmZ9qF734nJJhb2f94r33pFQyz", - "locked_amt": 0, - "reward": 6923840604194, - "owner": { - "Account": "m9dVuRgr3CQX5P5Fxh2t68QRhRFBZFWroUM9Do77Xusc6ZuJHfj4xhPokm62bFXw8WrA2Lq7dkJcFSEGHKBvVxJ2TmZBJKBBjzhEXtCP7UmZ9qF734nJJhb2f94r33pFQyz" - }, - "rank": 6, - "ownerType": "Account", - "ownerAddress": "m9dVuRgr3CQX5P5Fxh2t68QRhRFBZFWroUM9Do77Xusc6ZuJHfj4xhPokm62bFXw8WrA2Lq7dkJcFSEGHKBvVxJ2TmZBJKBBjzhEXtCP7UmZ9qF734nJJhb2f94r33pFQyz", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mTgXDqkyVacn7zCgoJfk7rKMVbvKhxfG1WD3jcXaXXdmUwiDouhYvGTGgVtYqW7MsvbKYtpFMKDRkJNJ5BWRvkP8TLHf2uz1XUuPU7cnz5nRE4uXaAhpCPPSjgAseybAsfU", - "locked_amt": 0, - "reward": 7518756679536, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 7, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mUUpjnXow2LHwm8a65cJsckTeQz55mRem6Vzo5VjZDbANnCoDKAFWESLiAPx6WUYcuosbSpYSoRm21amChNuLu3gqA2zo9VXdPNYNkfq8pxrsre7jNbLdDocqSfzQcywzaW", - "locked_amt": 0, - "reward": 7653541671166, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 8, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mXKJ97xTtrSPzxWHBKPurUpehP1yPywcPVw554CCFhMtEL4Vh6jQTmFgqQD416xScqwEix5NCQwfQ9BAh1pkp3Fae6BTG5FxGyMEiP3VDzeUPuXjqaC9dp6H7JgkCK2o7x4", - "locked_amt": 0, - "reward": 7512060104659, - "owner": { - "Account": "mXKJ97xTtrSPzxWHBKPurUpehP1yPywcPVw554CCFhMtEL4Vh6jQTmFgqQD416xScqwEix5NCQwfQ9BAh1pkp3Fae6BTG5FxGyMEiP3VDzeUPuXjqaC9dp6H7JgkCK2o7x4" - }, - "rank": 9, - "ownerType": "Account", - "ownerAddress": "mXKJ97xTtrSPzxWHBKPurUpehP1yPywcPVw554CCFhMtEL4Vh6jQTmFgqQD416xScqwEix5NCQwfQ9BAh1pkp3Fae6BTG5FxGyMEiP3VDzeUPuXjqaC9dp6H7JgkCK2o7x4", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mdXsA3Ee1YDt1aTcvUg7AKpzTKgJBoUDpvSRYmtZhM85dLBZN6VPYDd4BzFxLMo3RA2XKEc7t3nfipBcKQHbgpCqSZTZEZz8ohhMzqjDfvepuR9FPWCcJQfDwK8VZPimZ2J", - "locked_amt": 0, - "reward": 7973118109253, - "owner": { - "Account": "mdXsA3Ee1YDt1aTcvUg7AKpzTKgJBoUDpvSRYmtZhM85dLBZN6VPYDd4BzFxLMo3RA2XKEc7t3nfipBcKQHbgpCqSZTZEZz8ohhMzqjDfvepuR9FPWCcJQfDwK8VZPimZ2J" - }, - "rank": 10, - "ownerType": "Account", - "ownerAddress": "mdXsA3Ee1YDt1aTcvUg7AKpzTKgJBoUDpvSRYmtZhM85dLBZN6VPYDd4BzFxLMo3RA2XKEc7t3nfipBcKQHbgpCqSZTZEZz8ohhMzqjDfvepuR9FPWCcJQfDwK8VZPimZ2J", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mdca2ea2KpRZaW6s6NkYAY29wbprGPGGo8MmB812HxUXcvb8dDDE8J4GjN9VH9FbB8GJdohgFKoK2oDFLyL5cCsDtPU1maWw1o7Xnzo7uHBPg8MmRfxyBCUVRji7SxM2zBD", - "locked_amt": 0, - "reward": 7091398997002, - "owner": { - "Account": "mdca2ea2KpRZaW6s6NkYAY29wbprGPGGo8MmB812HxUXcvb8dDDE8J4GjN9VH9FbB8GJdohgFKoK2oDFLyL5cCsDtPU1maWw1o7Xnzo7uHBPg8MmRfxyBCUVRji7SxM2zBD" - }, - "rank": 11, - "ownerType": "Account", - "ownerAddress": "mdca2ea2KpRZaW6s6NkYAY29wbprGPGGo8MmB812HxUXcvb8dDDE8J4GjN9VH9FbB8GJdohgFKoK2oDFLyL5cCsDtPU1maWw1o7Xnzo7uHBPg8MmRfxyBCUVRji7SxM2zBD", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mgmcqkk1VFfsa1ko7ydBjhVuM9WuVFDGby9JthvDWsKX9kyqdNeqrSzbW1ccQ19sVfbHgVzfYwdGLipYdPcU4ZD5CjsbRmzZeEQ3WBZHUcEWDB1wsvV5avoC2xddxLvEDVP", - "locked_amt": 0, - "reward": 7373189839389, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 12, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "n2DPucZgNznPCfhRfAS8aHQUktJYZ99wAUcYM5Qijs7XyENoF6w1bzHuHdX9duEcZTX1X7o7tX9UkFF35AE8JzdbGqN5zYNAnyGJXVogBzbDNKwS6GhaRRR9f95PUxRwtD1", - "locked_amt": 0, - "reward": 7127318018509, - "owner": { - "Account": "n2DPucZgNznPCfhRfAS8aHQUktJYZ99wAUcYM5Qijs7XyENoF6w1bzHuHdX9duEcZTX1X7o7tX9UkFF35AE8JzdbGqN5zYNAnyGJXVogBzbDNKwS6GhaRRR9f95PUxRwtD1" - }, - "rank": 13, - "ownerType": "Account", - "ownerAddress": "n2DPucZgNznPCfhRfAS8aHQUktJYZ99wAUcYM5Qijs7XyENoF6w1bzHuHdX9duEcZTX1X7o7tX9UkFF35AE8JzdbGqN5zYNAnyGJXVogBzbDNKwS6GhaRRR9f95PUxRwtD1", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nV71a9Hec6jeXVFkUN6JvgiLDTucp1R4g6GewvnL7nYLbRrcxuPtFHt2PNjApDaLXLKTBEEwMdefjnQgKtBFaJAtA1jxkF9K2EKW1nBea26cHcvb326rbXNgYA4pNWv4roh", - "locked_amt": 0, - "reward": 6731430572710, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 14, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nXqyaSYaTas47KNqNwVtpNyfCsTmvYMQ2bXcmtpVbiuMLn9NsE7SwsJFq1bLh9jtwRSN7Wkg7h53DV1DSdEPnD3dwsMxy4hmYaiRmeqGw9z6tpqYcyaGWjURkQpLqoCPDeD", - "locked_amt": 0, - "reward": 7428022676833, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 15, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ngmrqKGVX91c5aAWjzpEhfGdTdMkfSacDvZRR43Ptu4whfW2yzJvy7UwzK4dBfUhn5o2eLnZWyoaJwuaTn9eDSUN8WtaULRr6v8dW7qRqUowdeJKLbmNXszxRgbBYoTgYKw", - "locked_amt": 0, - "reward": 7106713975923, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 16, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nkKb7ixLVJULE9WFufo5hb11Ggt9ako3tabHesmfTb1uDDHGscKKcSn4Cid8mbnFuRfJurrDwdi7ZPMUfDR5jkWMMC4GqBPaNU7Fka5LJhjQQmJVqmJXrbTMRMijWvB1p3Y", - "locked_amt": 0, - "reward": 7285963056286, - "owner": { - "Account": "nkKb7ixLVJULE9WFufo5hb11Ggt9ako3tabHesmfTb1uDDHGscKKcSn4Cid8mbnFuRfJurrDwdi7ZPMUfDR5jkWMMC4GqBPaNU7Fka5LJhjQQmJVqmJXrbTMRMijWvB1p3Y" - }, - "rank": 17, - "ownerType": "Account", - "ownerAddress": "nkKb7ixLVJULE9WFufo5hb11Ggt9ako3tabHesmfTb1uDDHGscKKcSn4Cid8mbnFuRfJurrDwdi7ZPMUfDR5jkWMMC4GqBPaNU7Fka5LJhjQQmJVqmJXrbTMRMijWvB1p3Y", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nvdsjA8biVgXQc7fFYxJwZAY7AM1wc8YqYNQ5fFe8NYQZnVHSRny6yQadz5MNXzsCYhcFHDAGqrgVRDKoPNN41Z2bwy57SZwCXSBrx3SnjVbefrRXzXAEuHMfUEBBtq8gzH", - "locked_amt": 0, - "reward": 6683887630176, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 18, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "o6Ckan2efbGTbJRSgzM9vwK5z4fTY5AFr3WqWTRNVL8dsXxEBkEqa4wsHs6g3ARWZovFVEkV3r1HJZbhLWK2vC8xBarMRKifta7xZNeprb5xUFpjeS3ekF9VBsnKPbwTtP1", - "locked_amt": 0, - "reward": 7033101699593, - "owner": { - "Account": "o6Ckan2efbGTbJRSgzM9vwK5z4fTY5AFr3WqWTRNVL8dsXxEBkEqa4wsHs6g3ARWZovFVEkV3r1HJZbhLWK2vC8xBarMRKifta7xZNeprb5xUFpjeS3ekF9VBsnKPbwTtP1" - }, - "rank": 19, - "ownerType": "Account", - "ownerAddress": "o6Ckan2efbGTbJRSgzM9vwK5z4fTY5AFr3WqWTRNVL8dsXxEBkEqa4wsHs6g3ARWZovFVEkV3r1HJZbhLWK2vC8xBarMRKifta7xZNeprb5xUFpjeS3ekF9VBsnKPbwTtP1", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oUgxBUWEPyFAekXW9T2UdJBcMF7xAuBfstrCX8ATXFk7MusqddFGoq2LN9euCbwVuXpSM5rGLKNUb6NVPFUVM5g4pA6CnXjNfNVBiy91NcH9eBVcdcG1eYUaKWQSYQ9t2um", - "locked_amt": 0, - "reward": 7692155365422, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 20, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oXYZWNZwxdDnd4e8qUE9gQUzcAZ1NzcBuhj9bjKi3kE7doyRJ4ixeoerFU8eM8v98C9gmFK2vJ67MdocCKKEexUXnoyyjUWYuNyoWQXJKGPK5EaZYo45Up2y2dqTG56KMqH", - "locked_amt": 0, - "reward": 7080100061688, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 21, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oZR6eDvW1ZQeqqDeegV9eaWMsxmVeWkugNfisTNUkiD8ecHpQbEHPSn6knvCsjxS94t93Pig9JpjZ5zQrujdtWhJvFpGiLFWFpCThrJhCFpAa4jZjKkPwAZCwQSoeehg64r", - "locked_amt": 0, - "reward": 7149826226361, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 22, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ord8D9WF21NPJmaDc3hN9wLnqRTcNsLwFVwUNZW9JuYmQhpbotxrBKXD25M4w76GXbTRS8nmr8y9jmriaw5tp2yhXLBHL47DK6S2eug2P3K5fYgCcJHEU2suaM8SaCTaek5", - "locked_amt": 0, - "reward": 7355095596398, - "owner": { - "Account": "ord8D9WF21NPJmaDc3hN9wLnqRTcNsLwFVwUNZW9JuYmQhpbotxrBKXD25M4w76GXbTRS8nmr8y9jmriaw5tp2yhXLBHL47DK6S2eug2P3K5fYgCcJHEU2suaM8SaCTaek5" - }, - "rank": 23, - "ownerType": "Account", - "ownerAddress": "ord8D9WF21NPJmaDc3hN9wLnqRTcNsLwFVwUNZW9JuYmQhpbotxrBKXD25M4w76GXbTRS8nmr8y9jmriaw5tp2yhXLBHL47DK6S2eug2P3K5fYgCcJHEU2suaM8SaCTaek5", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pFPEcfxidLvwmFKRQoifrSyWmmVY9UDEThoRFvGXddXRLZ8hB7xfWDYQYwHhTvZvXeL1p5Ygcnsuuxm1X8nHFJH6tEgK3cS76squcFVFSejaKJGMorYZdTup5uscNq6eDU2", - "locked_amt": 0, - "reward": 7079306672353, - "owner": { - "Account": "pFPEcfxidLvwmFKRQoifrSyWmmVY9UDEThoRFvGXddXRLZ8hB7xfWDYQYwHhTvZvXeL1p5Ygcnsuuxm1X8nHFJH6tEgK3cS76squcFVFSejaKJGMorYZdTup5uscNq6eDU2" - }, - "rank": 24, - "ownerType": "Account", - "ownerAddress": "pFPEcfxidLvwmFKRQoifrSyWmmVY9UDEThoRFvGXddXRLZ8hB7xfWDYQYwHhTvZvXeL1p5Ygcnsuuxm1X8nHFJH6tEgK3cS76squcFVFSejaKJGMorYZdTup5uscNq6eDU2", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pSnJHur5tnA4V88MGPBDCfPYSfSCGynJmbycW5mNeisABxgmZLErnfLuS5vvC6hBD3NKFvdCBhmNv5H8EzTAd5ApavNZeCoautkCDW4KUB8Ey6LNyHGCX19j9TLG8kPdKhf", - "locked_amt": 0, - "reward": 7141960968070, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 25, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pSy8VbEwv2v3B75yVkYLYsVjxhYbpNbKDnYwnBbrfqNPfYGUWj6SfDwnx9BKA8QWMGZCnKqWVv37USgZoEJppXZe37rb4qeBodQ3vqXLEqw1F7VaFpvN89pzZYpBEqqiQG9", - "locked_amt": 0, - "reward": 7027190914970, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 26, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pWf1wuUow5H95WxYtySqYMbzwY1xVS1FAj8WPXieuSBsYMgDJXNXzkHYhGLDW8v6J7qHNW5x5MSvyyvNLzUAJKsEr7udT4DDYZuUELERe2Q8jdR4a5t7rFpa7KQEJhf6bZb", - "locked_amt": 0, - "reward": 7256725536779, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 27, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pjsbtm6iNLBbMNG4FBGqggEFsiF8Y1DUUYb9J3KYeeQmoVUoSNfRhztzQQds2NLZYgWDGuXnQ3mLtZDK7MxNnQmEY98hdjfTWyGAigTRC9aizgF8WFo7it6ySQQ9fF9Rhea", - "locked_amt": 0, - "reward": 7765311539016, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 28, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "prV8r1A5oHHyMGuqvsyVP4eMfaqbYYtzKvfV6phwHMBNKaDnRCy4ntC81QGGS1dUDyqu6EuNamAEHZpR5cWWQkHvABrADkXs1fDbNqKtisEAnVjBj46iDJdQ7ck4vGs69Td", - "locked_amt": 0, - "reward": 6947252201599, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 29, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "q3e51AKaDByuyB1nM9fYpcgafrmZ52T3caoMkVD1iDcLQJaXUcSpNEiwvuTs6hc4EcMubf2wp3axfkGZgkgBG3FYZ4eaHxeB1gDbEWS6V2pPBrqitRXisURnNRnKk9T841F", - "locked_amt": 0, - "reward": 6998409757231, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 30, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qHeUtHGi27ZRFHyBimKF6fHCy8B3mr2VShAkfk2ifkb8HAwD8Gr7Zrq96F9s5G4VWFUSbaUVcCBnExnumHeoQqfjRp52CRfzXDzkBevUG2CVtGqUvGGV1DxsDAEXHhCyXbX", - "locked_amt": 0, - "reward": 6938110125794, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 31, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qWpfeFB4BB6RLCWdAaeHcq84BfeXKFh3woQFUCGc2wnCMyh5bnzofBMxm63Ns6fe6QuFUmRj7reyJVy958pwb9h4yCh97QfkKvmgtdyDxamD1UkeX9Y55wRGTSgdugosLLc", - "locked_amt": 0, - "reward": 6554033459794, - "owner": { - "Account": "qWpfeFB4BB6RLCWdAaeHcq84BfeXKFh3woQFUCGc2wnCMyh5bnzofBMxm63Ns6fe6QuFUmRj7reyJVy958pwb9h4yCh97QfkKvmgtdyDxamD1UkeX9Y55wRGTSgdugosLLc" - }, - "rank": 32, - "ownerType": "Account", - "ownerAddress": "qWpfeFB4BB6RLCWdAaeHcq84BfeXKFh3woQFUCGc2wnCMyh5bnzofBMxm63Ns6fe6QuFUmRj7reyJVy958pwb9h4yCh97QfkKvmgtdyDxamD1UkeX9Y55wRGTSgdugosLLc", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qXCkaKuFChiPXXzU8Zz4RHNAygDmHFBSbBiCFhtiqMtVXdhv7DbiUtFjoyaEFvfDuH2yJ92Lbbydyg1onghEi79HcVfMxwJksAFPJk3qgXFGutvWv5JCMPmujTkwY1MdMfv", - "locked_amt": 0, - "reward": 7171782082614, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 33, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qe2tbCK8cBBwPLEwGNWmaJWx5cZ6Gkf4mUAdbPU16PMa7GkuMQFBg1JK77qXo8oQHhJM59Yr3xoSUdBKNgeQXGPybd13pyDWTNCjTXoa4fsg8G6nYb4vHKHngPy4fAg9WuA", - "locked_amt": 0, - "reward": 6742685385399, - "owner": { - "Account": "qe2tbCK8cBBwPLEwGNWmaJWx5cZ6Gkf4mUAdbPU16PMa7GkuMQFBg1JK77qXo8oQHhJM59Yr3xoSUdBKNgeQXGPybd13pyDWTNCjTXoa4fsg8G6nYb4vHKHngPy4fAg9WuA" - }, - "rank": 34, - "ownerType": "Account", - "ownerAddress": "qe2tbCK8cBBwPLEwGNWmaJWx5cZ6Gkf4mUAdbPU16PMa7GkuMQFBg1JK77qXo8oQHhJM59Yr3xoSUdBKNgeQXGPybd13pyDWTNCjTXoa4fsg8G6nYb4vHKHngPy4fAg9WuA", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qier5uHrps512yKXMiLXL319rT5dzwu7yeEfKi6ze5w6kCM2DMfdtW7TqcXdzPZhAB3tNAZ1Hv7Q2pARF6hnyusjdxVwN4zLoPQS3wsGMZopVXKXUqm3DySD9kzqQQFej4c", - "locked_amt": 0, - "reward": 7324165325785, - "owner": { - "Account": "qier5uHrps512yKXMiLXL319rT5dzwu7yeEfKi6ze5w6kCM2DMfdtW7TqcXdzPZhAB3tNAZ1Hv7Q2pARF6hnyusjdxVwN4zLoPQS3wsGMZopVXKXUqm3DySD9kzqQQFej4c" - }, - "rank": 35, - "ownerType": "Account", - "ownerAddress": "qier5uHrps512yKXMiLXL319rT5dzwu7yeEfKi6ze5w6kCM2DMfdtW7TqcXdzPZhAB3tNAZ1Hv7Q2pARF6hnyusjdxVwN4zLoPQS3wsGMZopVXKXUqm3DySD9kzqQQFej4c", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qqoRXtqcJux5mNH5UaWp2WVdqg8xmAS9PfPUKLdEt24HKcj4SazPx59ctn23M1FskJBhxFBfnuwbrsDjRRJxEZynZLSaj6L4JUuGXMrtfFyxzL9mEUuWrjNk3egCTRkbz3Y", - "locked_amt": 0, - "reward": 6915066298205, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 36, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qsT2E4s538wm9c2L53aXyNEzm5hNdyJ1zbD2jRs5hQZXVu55hD5nLVTNi8URnDcCaT14mNUdQTqQt7krWPjHeGxCjKyyQcdTpcHDzJjwMeAdHNRbUoWgoXzrFeEym48TRUM", - "locked_amt": 0, - "reward": 6968405512419, - "owner": { - "Account": "qsT2E4s538wm9c2L53aXyNEzm5hNdyJ1zbD2jRs5hQZXVu55hD5nLVTNi8URnDcCaT14mNUdQTqQt7krWPjHeGxCjKyyQcdTpcHDzJjwMeAdHNRbUoWgoXzrFeEym48TRUM" - }, - "rank": 37, - "ownerType": "Account", - "ownerAddress": "qsT2E4s538wm9c2L53aXyNEzm5hNdyJ1zbD2jRs5hQZXVu55hD5nLVTNi8URnDcCaT14mNUdQTqQt7krWPjHeGxCjKyyQcdTpcHDzJjwMeAdHNRbUoWgoXzrFeEym48TRUM", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "r8bBMqBn483hgwLsNJy4Ck3oVFTxdU7br2RKT7UGWcPbaUoMxv6V3qUtYdzwkeWhVgRa3AfLTDZ96xu93XM5YwwvHHqUnGVESBkhBPNuRnwmNyUema2bykezc2BaJe9EpNb", - "locked_amt": 0, - "reward": 6886237514739, - "owner": { - "Account": "r8bBMqBn483hgwLsNJy4Ck3oVFTxdU7br2RKT7UGWcPbaUoMxv6V3qUtYdzwkeWhVgRa3AfLTDZ96xu93XM5YwwvHHqUnGVESBkhBPNuRnwmNyUema2bykezc2BaJe9EpNb" - }, - "rank": 38, - "ownerType": "Account", - "ownerAddress": "r8bBMqBn483hgwLsNJy4Ck3oVFTxdU7br2RKT7UGWcPbaUoMxv6V3qUtYdzwkeWhVgRa3AfLTDZ96xu93XM5YwwvHHqUnGVESBkhBPNuRnwmNyUema2bykezc2BaJe9EpNb", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rSGm1CeKgLT7SeUWitc6XWMueHfcC1mg5ozjB2jWMANMuVUYze2b2k2mDYSoXqVL4ia5KUs3uyKWczDSMK4LGoBwWBewP22L2JeJMpbN9eZ39yG5AUfRKAvi78yGfXqeid4", - "locked_amt": 0, - "reward": 6870853163373, - "owner": { - "Account": "rSGm1CeKgLT7SeUWitc6XWMueHfcC1mg5ozjB2jWMANMuVUYze2b2k2mDYSoXqVL4ia5KUs3uyKWczDSMK4LGoBwWBewP22L2JeJMpbN9eZ39yG5AUfRKAvi78yGfXqeid4" - }, - "rank": 39, - "ownerType": "Account", - "ownerAddress": "rSGm1CeKgLT7SeUWitc6XWMueHfcC1mg5ozjB2jWMANMuVUYze2b2k2mDYSoXqVL4ia5KUs3uyKWczDSMK4LGoBwWBewP22L2JeJMpbN9eZ39yG5AUfRKAvi78yGfXqeid4", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rThKGgPJkxRHUL9qCA97K6pW3RPDqprYjLHZiEb42bLYYPSxsbwd9pWFNdqKVZVhW7VtKA85gCs7SdwkENhTjhEvTe4NkYVEhBSpeuG5DdVBMm3mYf5gQvNKKiWhE29r5rV", - "locked_amt": 0, - "reward": 7893306567778, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 40, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rdHa4H5p1rVtQyqD5AjDHyr1EGg7yVU1wynqQ9VRqU8Wp7kMcePsSk2tURGzRLnzS36CaKEadpfRGwa3ucvFH5MEGYvF1LAqSQQT3zE1Fx7wQzYsrvDpJ44bBa6dKxN6mTC", - "locked_amt": 0, - "reward": 6336840178975, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 41, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rvXLHF8DBNwzZ63uSWPki3y7uNgGbdRCrKpouEP9N7awiGBDaP1uzyrtLBDtFbNgw8bPNjbyMsfAsNutZKnuX8JXzMiFvpW9vK4c2zmAmk3RygzwiFGCVJ9KSU7b4bgC1UT", - "locked_amt": 0, - "reward": 6877531223603, - "owner": { - "Account": "rvXLHF8DBNwzZ63uSWPki3y7uNgGbdRCrKpouEP9N7awiGBDaP1uzyrtLBDtFbNgw8bPNjbyMsfAsNutZKnuX8JXzMiFvpW9vK4c2zmAmk3RygzwiFGCVJ9KSU7b4bgC1UT" - }, - "rank": 42, - "ownerType": "Account", - "ownerAddress": "rvXLHF8DBNwzZ63uSWPki3y7uNgGbdRCrKpouEP9N7awiGBDaP1uzyrtLBDtFbNgw8bPNjbyMsfAsNutZKnuX8JXzMiFvpW9vK4c2zmAmk3RygzwiFGCVJ9KSU7b4bgC1UT", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "sMnHcRLM2BTKDLrJUDcTQPAE7NhkNDS3v986rmV2eZJF5RRqtDJQya2RnLTN8vBodfHrqxVeVpFG2MEbta6YmNfokSn135rYhAvnmDwPL1nd3Uq3iwqih5hNBpiGK7HY9D1", - "locked_amt": 0, - "reward": 7611295592578, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 43, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "sVmcJnhKJDfm8wzVjyeLhxi9RjcabEagJLnQoS6BXV6VvQ1GHpnyTPJBJbwCbG5igWn49UdMQtroxr2pGggh2FbXtyUbKqWexyK5LGgFn5QS4FesdFbnbcWf2bYkx6vDeDM", - "locked_amt": 0, - "reward": 7206376600867, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 44, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "shAky1Dnjxdhy1HsJRC17hgFw7YmT8PSdobce73k3ANmJWaDmycRyqruoxoxKoaVpudkCY4ENSgrkEoUgfG9xBa77jULgpDcWvYNLFQfWsA2bSFbooCJhZTHyGLyNQC73os", - "locked_amt": 0, - "reward": 8055884278776, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 45, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "shB6W4UWipm3JQQgmbkC4Xy3CEvtyz4FL3QBpYUb5aRr4UspY4ezzq6XzoYENZgaf6p2j3xrtLuWNGcYhNU1jUdi9hS62bvCctoiqNNVdx1dXLJHyndHyT97Cww6Kmyr5r9", - "locked_amt": 0, - "reward": 7360588042631, - "owner": { - "Account": "shB6W4UWipm3JQQgmbkC4Xy3CEvtyz4FL3QBpYUb5aRr4UspY4ezzq6XzoYENZgaf6p2j3xrtLuWNGcYhNU1jUdi9hS62bvCctoiqNNVdx1dXLJHyndHyT97Cww6Kmyr5r9" - }, - "rank": 46, - "ownerType": "Account", - "ownerAddress": "shB6W4UWipm3JQQgmbkC4Xy3CEvtyz4FL3QBpYUb5aRr4UspY4ezzq6XzoYENZgaf6p2j3xrtLuWNGcYhNU1jUdi9hS62bvCctoiqNNVdx1dXLJHyndHyT97Cww6Kmyr5r9", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "soPdMsNykSsrLcmHGBGfiajFNc5kJ7SheMEapCu9zjnTyiFaJLc2MTeq8ZQ9R91dgxFQJjkybY2ETgTU5Xv3J9RhoHqzNVnBCty5s2W87UdntXWiSSWPEEpXYrun5Pw7eML", - "locked_amt": 0, - "reward": 7351299597267, - "owner": { - "Account": "soPdMsNykSsrLcmHGBGfiajFNc5kJ7SheMEapCu9zjnTyiFaJLc2MTeq8ZQ9R91dgxFQJjkybY2ETgTU5Xv3J9RhoHqzNVnBCty5s2W87UdntXWiSSWPEEpXYrun5Pw7eML" - }, - "rank": 47, - "ownerType": "Account", - "ownerAddress": "soPdMsNykSsrLcmHGBGfiajFNc5kJ7SheMEapCu9zjnTyiFaJLc2MTeq8ZQ9R91dgxFQJjkybY2ETgTU5Xv3J9RhoHqzNVnBCty5s2W87UdntXWiSSWPEEpXYrun5Pw7eML", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "suRcCj2X2THo8mFFYrjhS4bbo45RDeT59VJi1rWoq1ZEz9Xx9CyiqMsz9oWhNhr6g71aPWrBtwMJR6oxxhmvfNxy1Sd5Q4VgMWmmBAfwnUabaX6itEmVv9fbGigFyNtSGvR", - "locked_amt": 0, - "reward": 7514873489879, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 48, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "txesrFKYx2Ea7foBoBUNDj1rn1MjG8KREfZYNEb6UGg1k3KSBQdXr52Ayfemz1cEJ64AosipuGH5khnSXq87EcKP6uD2JrGb1NKdAgBELYkocXpbcmANd4VupWnVCPoecr1", - "locked_amt": 0, - "reward": 7493948476408, - "owner": { - "Account": "txesrFKYx2Ea7foBoBUNDj1rn1MjG8KREfZYNEb6UGg1k3KSBQdXr52Ayfemz1cEJ64AosipuGH5khnSXq87EcKP6uD2JrGb1NKdAgBELYkocXpbcmANd4VupWnVCPoecr1" - }, - "rank": 49, - "ownerType": "Account", - "ownerAddress": "txesrFKYx2Ea7foBoBUNDj1rn1MjG8KREfZYNEb6UGg1k3KSBQdXr52Ayfemz1cEJ64AosipuGH5khnSXq87EcKP6uD2JrGb1NKdAgBELYkocXpbcmANd4VupWnVCPoecr1", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "u1bee5K2ZFCDr7Cp1wZRomLHM18TVRwqtMNTFYX8dojJRQMEmALMVceKo6n5P29U3H7eNkGoTwV8aPdgt1tHSgoyHqkvKdGebNp8wa6EsqF1JU3mQFKVzUbeWt3wvuGm3Lk", - "locked_amt": 0, - "reward": 7551922334029, - "owner": { - "Account": "u1bee5K2ZFCDr7Cp1wZRomLHM18TVRwqtMNTFYX8dojJRQMEmALMVceKo6n5P29U3H7eNkGoTwV8aPdgt1tHSgoyHqkvKdGebNp8wa6EsqF1JU3mQFKVzUbeWt3wvuGm3Lk" - }, - "rank": 50, - "ownerType": "Account", - "ownerAddress": "u1bee5K2ZFCDr7Cp1wZRomLHM18TVRwqtMNTFYX8dojJRQMEmALMVceKo6n5P29U3H7eNkGoTwV8aPdgt1tHSgoyHqkvKdGebNp8wa6EsqF1JU3mQFKVzUbeWt3wvuGm3Lk", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uDYKaU8SM5iriU88tWsR8Z7KbepmjiVubFLtetASuzEeBjwJZ5en4XuXjJTCZgHztK85gjS9que8njCebHGku9wnXzKbneYwx5xF1puiNF8XWRTcvDAta1ndsa4jAqGkWzm", - "locked_amt": 0, - "reward": 7391984635089, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 51, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uSXgfWF1uhmxjmLaQPXhVY2NJt1UNUKf5xTGK5eCGF1kFtnhG2DwhYJGX4kowZScrJV37vEFDMPEzG4q2hsjBoSMbnMjz7qUWevKA5UP3MBZS45k6vcjHEF5GB5CeuafQwA", - "locked_amt": 0, - "reward": 7767772961486, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 52, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ufX5NcUWXUKkaLYrdcUf9yxmSjWngrS8Y5ErGmzf56DjHUqeonr3oM4cLMsuFKfm88WS1b8FPVoMBoETnuoTkHZ4whwhsSEuQzuPMQZy5UjLV5u33vbe8sFgceaYnn5XVsd", - "locked_amt": 0, - "reward": 7235901395821, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 53, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uvR72GsvbjCy2jCR6EKbfKpgUfHYQrphV6u915bQ3rHAEyPV5ows6QjtmoLS7NSvmJrBWgM7v92faivad82t3WDBB1ceUQmohNh6EBT2TiNALkwaMSzAzKziFEqUY67j9RU", - "locked_amt": 0, - "reward": 7414055592213, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 54, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xEXp8qBarpXnVD9DJHUj8ywkWPggbPmgsmGFFtGAuXd2EXwEiXiXJ6r4WqdjvTvpE7Fx42TpwnkrpFwdc5BphPu7LCQ3FPU1DMQ1WKoDCxeQVircgHKrFpWsCZ8VLrGCdWm", - "locked_amt": 0, - "reward": 7317990920949, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 55, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xLwzkFxrXetA74LSreTusgyv9Lh62tvHfL7jnuGmEdG7Aa9W7XLEDx7Ag968wjD8CyVncvsKVd6YXzrB6HdHVa1e7mYDVe6tDrmXiAatAnH3KphhPHzcPsEUQZzyhV2Emqt", - "locked_amt": 0, - "reward": 7495848393394, - "owner": { - "Account": "xLwzkFxrXetA74LSreTusgyv9Lh62tvHfL7jnuGmEdG7Aa9W7XLEDx7Ag968wjD8CyVncvsKVd6YXzrB6HdHVa1e7mYDVe6tDrmXiAatAnH3KphhPHzcPsEUQZzyhV2Emqt" - }, - "rank": 56, - "ownerType": "Account", - "ownerAddress": "xLwzkFxrXetA74LSreTusgyv9Lh62tvHfL7jnuGmEdG7Aa9W7XLEDx7Ag968wjD8CyVncvsKVd6YXzrB6HdHVa1e7mYDVe6tDrmXiAatAnH3KphhPHzcPsEUQZzyhV2Emqt", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xWeLQPyUXo82pjvxmf5iZdr5itR7kWriTpMK47M5KkDYYtg6Vmtgt1D5DLgEDLfv8BuJjyuB4aDB9wM3NXcdEY4Y9wzJ87JKjGfY2XzZVvb6R3LcxWCmzRfBS1bSihu9af7", - "locked_amt": 0, - "reward": 7804360300347, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 57, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xc5LwKkUxzQ6Vhtd83Cuz5whAPfi8naDGvQPLhQPqmGGteZRGrfoH2QU3ZwGiy6xuviEfjpkdZNh69rJfg2L6PVgPBdaumX5AZT4N5Lyv9GAi1ZunJWQobKxXk2JGsWdZwU", - "locked_amt": 0, - "reward": 7016612133945, - "owner": { - "Account": "xc5LwKkUxzQ6Vhtd83Cuz5whAPfi8naDGvQPLhQPqmGGteZRGrfoH2QU3ZwGiy6xuviEfjpkdZNh69rJfg2L6PVgPBdaumX5AZT4N5Lyv9GAi1ZunJWQobKxXk2JGsWdZwU" - }, - "rank": 58, - "ownerType": "Account", - "ownerAddress": "xc5LwKkUxzQ6Vhtd83Cuz5whAPfi8naDGvQPLhQPqmGGteZRGrfoH2QU3ZwGiy6xuviEfjpkdZNh69rJfg2L6PVgPBdaumX5AZT4N5Lyv9GAi1ZunJWQobKxXk2JGsWdZwU", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xqn4oFHyeUE46CJ7XZnaA6pFSqUt8EkoNjM1or4dyNigWpP9GfbH8Y5ps8PqCF5wcnfvjoBtM2gNrauB3EVATv6PnLPiGBp46eiNqrVcWWcFjNTwB5ggQ1cJQVdDXsoNi1S", - "locked_amt": 0, - "reward": 6996618997361, - "owner": { - "Account": "xqn4oFHyeUE46CJ7XZnaA6pFSqUt8EkoNjM1or4dyNigWpP9GfbH8Y5ps8PqCF5wcnfvjoBtM2gNrauB3EVATv6PnLPiGBp46eiNqrVcWWcFjNTwB5ggQ1cJQVdDXsoNi1S" - }, - "rank": 59, - "ownerType": "Account", - "ownerAddress": "xqn4oFHyeUE46CJ7XZnaA6pFSqUt8EkoNjM1or4dyNigWpP9GfbH8Y5ps8PqCF5wcnfvjoBtM2gNrauB3EVATv6PnLPiGBp46eiNqrVcWWcFjNTwB5ggQ1cJQVdDXsoNi1S", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "y2axcZATs557zYzuuQSyyVDpV7jxR5th4YFy22o7bABByvXvybTGCUxfvsyaSsenZA5b1sYYdSLwYdjttnkx9wBpYhuTqy72xKSKhbJFwZwzmUEkpKCwT6pRXqgDV2BBFvC", - "locked_amt": 0, - "reward": 6946491986904, - "owner": { - "Account": "y2axcZATs557zYzuuQSyyVDpV7jxR5th4YFy22o7bABByvXvybTGCUxfvsyaSsenZA5b1sYYdSLwYdjttnkx9wBpYhuTqy72xKSKhbJFwZwzmUEkpKCwT6pRXqgDV2BBFvC" - }, - "rank": 60, - "ownerType": "Account", - "ownerAddress": "y2axcZATs557zYzuuQSyyVDpV7jxR5th4YFy22o7bABByvXvybTGCUxfvsyaSsenZA5b1sYYdSLwYdjttnkx9wBpYhuTqy72xKSKhbJFwZwzmUEkpKCwT6pRXqgDV2BBFvC", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yDiwuTDWV9WPeihhaToqHYijiwM5n84deh8Nn779WyNr9kGFcRLnHHkDTcVpzLaNSEa7b3DQQky6i72hvsrKJ2uFSsJQD37pokQKVokV4Q2q1p1aRPNRdSujfmcdMP3MBVS", - "locked_amt": 0, - "reward": 7008983973208, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 61, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yjfKm8yE7SarRQuXYzt7RZ5EkFLZv67KfSiKarVhWsTdHiy3GGbmWF3KmYHvqVWaEGQoVQiP1A6vgrA7A3zt45Zc2zvht6q9REHkYLhFywmn7czjj897xXe7eTkj6itMx8X", - "locked_amt": 0, - "reward": 6986991787460, - "owner": { - "Account": "yjfKm8yE7SarRQuXYzt7RZ5EkFLZv67KfSiKarVhWsTdHiy3GGbmWF3KmYHvqVWaEGQoVQiP1A6vgrA7A3zt45Zc2zvht6q9REHkYLhFywmn7czjj897xXe7eTkj6itMx8X" - }, - "rank": 62, - "ownerType": "Account", - "ownerAddress": "yjfKm8yE7SarRQuXYzt7RZ5EkFLZv67KfSiKarVhWsTdHiy3GGbmWF3KmYHvqVWaEGQoVQiP1A6vgrA7A3zt45Zc2zvht6q9REHkYLhFywmn7czjj897xXe7eTkj6itMx8X", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yomfztR36C81wr31uZ5XZFvww6dfcFK2wBmvRsHnm3JVgF3XcCz6fs58Z3hfiFswux55xsVznuwMRq6Frk28FcJRrpvnsyT3pRNmuqq4mHFqvPYbSYk75BnC3dJX3DD76pC", - "locked_amt": 0, - "reward": 7020551562601, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 63, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "z96tDWGGF4cuTrQLZgLnuBos4VAMfUP3qYJ4A4mHWoEZWi5cC2P6hNgC5b9LiWLaWTYseda3teKrTvEjCsr3aPVDdLyhgrMshuJX8KPy4yZks5YZRt5JHNxM4fh7fX8fgTw", - "locked_amt": 0, - "reward": 7454220423464, - "owner": { - "Account": "z96tDWGGF4cuTrQLZgLnuBos4VAMfUP3qYJ4A4mHWoEZWi5cC2P6hNgC5b9LiWLaWTYseda3teKrTvEjCsr3aPVDdLyhgrMshuJX8KPy4yZks5YZRt5JHNxM4fh7fX8fgTw" - }, - "rank": 64, - "ownerType": "Account", - "ownerAddress": "z96tDWGGF4cuTrQLZgLnuBos4VAMfUP3qYJ4A4mHWoEZWi5cC2P6hNgC5b9LiWLaWTYseda3teKrTvEjCsr3aPVDdLyhgrMshuJX8KPy4yZks5YZRt5JHNxM4fh7fX8fgTw", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zERG7qf7STXTAKKiUbEvfj4YcpTttHASTxDXUBA1JYxdhpuU13FtgzDUpU5eMSt3qxYamQNZjiiiDKVN3zi5Mnz264ggAD3Ft9j3BwmcHArQpPdVhLpHCfnq5Pot6GCW9Vx", - "locked_amt": 0, - "reward": 2335501877268, - "owner": { - "Account": "zERG7qf7STXTAKKiUbEvfj4YcpTttHASTxDXUBA1JYxdhpuU13FtgzDUpU5eMSt3qxYamQNZjiiiDKVN3zi5Mnz264ggAD3Ft9j3BwmcHArQpPdVhLpHCfnq5Pot6GCW9Vx" - }, - "rank": 65, - "ownerType": "Account", - "ownerAddress": "zERG7qf7STXTAKKiUbEvfj4YcpTttHASTxDXUBA1JYxdhpuU13FtgzDUpU5eMSt3qxYamQNZjiiiDKVN3zi5Mnz264ggAD3Ft9j3BwmcHArQpPdVhLpHCfnq5Pot6GCW9Vx", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zQgvJ6xQPCumYhTso8LCgmcxjATSuza5ACBHQs1t1XPBdxQkh56vHMJXrd89dJV5d6fXimP8HiS4Kb1jcj2YpLCQQsJLhiJDzR7PHPE5LLmDSPPqoT4XA1C4RL7vX4zdAAY", - "locked_amt": 0, - "reward": 6829571609560, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 66, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zT3G39wGo9htH5GGCfugrE6fEbpDknb2aNwrPS51Upiqb1zZh8QvJKDKJjrJYC9fNBwezUWbqiN1HXjr2kzcQYacXQkyycVqP88aHb7v6RNCuLuPVEF8iMpZGEteeRXb2nS", - "locked_amt": 0, - "reward": 6777651848269, - "owner": { - "Account": "zT3G39wGo9htH5GGCfugrE6fEbpDknb2aNwrPS51Upiqb1zZh8QvJKDKJjrJYC9fNBwezUWbqiN1HXjr2kzcQYacXQkyycVqP88aHb7v6RNCuLuPVEF8iMpZGEteeRXb2nS" - }, - "rank": 67, - "ownerType": "Account", - "ownerAddress": "zT3G39wGo9htH5GGCfugrE6fEbpDknb2aNwrPS51Upiqb1zZh8QvJKDKJjrJYC9fNBwezUWbqiN1HXjr2kzcQYacXQkyycVqP88aHb7v6RNCuLuPVEF8iMpZGEteeRXb2nS", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zTHaqm7jKyV4cSqrdeqCkeLci74v6ymXU8QRN48qxAoztYZ8hbLemskC9ycQqtEW2EdzALw3bwyEGmrG9J3DDeNKZoPoPCSLHL2Cymkf29zxvi8J23gB9MFwFSRQSEKRJf6", - "locked_amt": 0, - "reward": 7432524164948, - "owner": { - "Account": "zTHaqm7jKyV4cSqrdeqCkeLci74v6ymXU8QRN48qxAoztYZ8hbLemskC9ycQqtEW2EdzALw3bwyEGmrG9J3DDeNKZoPoPCSLHL2Cymkf29zxvi8J23gB9MFwFSRQSEKRJf6" - }, - "rank": 68, - "ownerType": "Account", - "ownerAddress": "zTHaqm7jKyV4cSqrdeqCkeLci74v6ymXU8QRN48qxAoztYZ8hbLemskC9ycQqtEW2EdzALw3bwyEGmrG9J3DDeNKZoPoPCSLHL2Cymkf29zxvi8J23gB9MFwFSRQSEKRJf6", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zVnmVA7jfgAoBGnsMDrHGiwPx3sZhG42t6pysHjMj7rF6BKPGut87GZaDaXwmdjXsz53ULB2Mmur9aoSU1ZCGHYwQ57eN59FMwHqdBjULpNBfvFZN1qnzVpgz23y3UPPz6x", - "locked_amt": 0, - "reward": 7465149666031, - "owner": { - "Account": "zVnmVA7jfgAoBGnsMDrHGiwPx3sZhG42t6pysHjMj7rF6BKPGut87GZaDaXwmdjXsz53ULB2Mmur9aoSU1ZCGHYwQ57eN59FMwHqdBjULpNBfvFZN1qnzVpgz23y3UPPz6x" - }, - "rank": 69, - "ownerType": "Account", - "ownerAddress": "zVnmVA7jfgAoBGnsMDrHGiwPx3sZhG42t6pysHjMj7rF6BKPGut87GZaDaXwmdjXsz53ULB2Mmur9aoSU1ZCGHYwQ57eN59FMwHqdBjULpNBfvFZN1qnzVpgz23y3UPPz6x", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zseHtUg7CNtUThmcsnren1FJtK9inn2kTMg38jd74zrRzPP1Xm8XzXQE528bb9CSwABwnuMgVA5CjUJMYnNmzdMTMTkQHiWuAAmASeS27myBaEGEqg3DUXLJZdPzMxaS7Nq", - "locked_amt": 0, - "reward": 7134931385805, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 70, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "215SPqmBgiheG8Eac5yBi6NiNb6MyN5yC9MKJKfUAtU5NmafmowELzZKXo3pbS1h2Unqeyw9BShTz4ZxNVt9ZG5TTLJAuMHrwLHtXicKpgrhTttkhLA14apZ4tDxNgQkCtj1", - "locked_amt": 0, - "reward": 7074719183418, - "owner": { - "Account": "215SPqmBgiheG8Eac5yBi6NiNb6MyN5yC9MKJKfUAtU5NmafmowELzZKXo3pbS1h2Unqeyw9BShTz4ZxNVt9ZG5TTLJAuMHrwLHtXicKpgrhTttkhLA14apZ4tDxNgQkCtj1" - }, - "rank": 71, - "ownerType": "Account", - "ownerAddress": "215SPqmBgiheG8Eac5yBi6NiNb6MyN5yC9MKJKfUAtU5NmafmowELzZKXo3pbS1h2Unqeyw9BShTz4ZxNVt9ZG5TTLJAuMHrwLHtXicKpgrhTttkhLA14apZ4tDxNgQkCtj1", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "21SQ3HyThUvJUAtn3cfYUAisdw9h25DCp5hT2vzeiiQrvjGpmjsZKmbMMQTFSfU3EsEYtLqncXhVRkxnapwYrjYmR1tVdx3xE3nz2UkxSD1L34E1aTCoGqqZek9TfmSTQ5Sn", - "locked_amt": 0, - "reward": 7043130493696, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 72, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "21kVjRYLmoPy3WGK8h2TrVxVYzWT5QZfpMD9JHwAALkAVbvGLGETJxPmZuMDZNLxXUkebsyCRXSzxgNAvoiMxaYX2mFwm6RnYHrg9z7iUV2uX3ZJwKk5oHHYvSvHtzdEhPka", - "locked_amt": 0, - "reward": 7192222581053, - "owner": { - "Account": "21kVjRYLmoPy3WGK8h2TrVxVYzWT5QZfpMD9JHwAALkAVbvGLGETJxPmZuMDZNLxXUkebsyCRXSzxgNAvoiMxaYX2mFwm6RnYHrg9z7iUV2uX3ZJwKk5oHHYvSvHtzdEhPka" - }, - "rank": 73, - "ownerType": "Account", - "ownerAddress": "21kVjRYLmoPy3WGK8h2TrVxVYzWT5QZfpMD9JHwAALkAVbvGLGETJxPmZuMDZNLxXUkebsyCRXSzxgNAvoiMxaYX2mFwm6RnYHrg9z7iUV2uX3ZJwKk5oHHYvSvHtzdEhPka", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "22e4nDy3SHN1z6EQj7hQ9qwBASfoEXZ7PWgK1xYZGFsPXSNEBHEB4ntcLnDpYpePbjsuLFAUQC1YXTJdJN3bq9Gr6bwe24UiPXhZgxSHZPHspCeWTeoPiopw9zHkbhwBecjc", - "locked_amt": 0, - "reward": 6685578690172, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 74, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "22exgqwRRtryBxVT7f7xC27fBkcHjUbAA3BxqL9ySqDguJAaWY5UWtgVkcm3o8HE1Tf8qcfXNpBt7ezva3pLSaygVrrdnRktF4stZMDoLnUhy2ej1hnoKP91TyQrumkbUU4n", - "locked_amt": 0, - "reward": 7066191295983, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 75, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "238cmghibzsNoAhVYsXfmmgv4MCN88PWQMcmUTSbvTXJ1uFpqi4ejo74eNZQnve1xbwiLREyo4p2kReH49vV6gi6Wf137chzfiCMoG18LHBkTVxrwxWEinAyeQmd2QiVitV8", - "locked_amt": 0, - "reward": 7545523161920, - "owner": { - "Account": "238cmghibzsNoAhVYsXfmmgv4MCN88PWQMcmUTSbvTXJ1uFpqi4ejo74eNZQnve1xbwiLREyo4p2kReH49vV6gi6Wf137chzfiCMoG18LHBkTVxrwxWEinAyeQmd2QiVitV8" - }, - "rank": 76, - "ownerType": "Account", - "ownerAddress": "238cmghibzsNoAhVYsXfmmgv4MCN88PWQMcmUTSbvTXJ1uFpqi4ejo74eNZQnve1xbwiLREyo4p2kReH49vV6gi6Wf137chzfiCMoG18LHBkTVxrwxWEinAyeQmd2QiVitV8", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23Bgd58Xr999Xt7cgh671Lr77H3en5C8SjMfg41NJEnvL7hyZdo7YUPtVHM9fLoT9jCNRnJXmMMeeL3B9Q7JMCPL6ByjEDJUPzruabShyfSZpNAd16rnJ34i4wNx9Biic8QN", - "locked_amt": 0, - "reward": 7880699523860, - "owner": { - "Account": "23Bgd58Xr999Xt7cgh671Lr77H3en5C8SjMfg41NJEnvL7hyZdo7YUPtVHM9fLoT9jCNRnJXmMMeeL3B9Q7JMCPL6ByjEDJUPzruabShyfSZpNAd16rnJ34i4wNx9Biic8QN" - }, - "rank": 77, - "ownerType": "Account", - "ownerAddress": "23Bgd58Xr999Xt7cgh671Lr77H3en5C8SjMfg41NJEnvL7hyZdo7YUPtVHM9fLoT9jCNRnJXmMMeeL3B9Q7JMCPL6ByjEDJUPzruabShyfSZpNAd16rnJ34i4wNx9Biic8QN", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23XeH9YWf68FhQX6wdHBjrdz4Yu2N9DuubrthX267FcdWaqPRyKwTnvYa2xRTaEJG2LBY96XzG4NRStHktt2ETZitSRN7ZjoKAe43EFKEZfCge4MCgoWYfMptWSqE9sZUzzE", - "locked_amt": 0, - "reward": 6880069718934, - "owner": { - "Account": "23XeH9YWf68FhQX6wdHBjrdz4Yu2N9DuubrthX267FcdWaqPRyKwTnvYa2xRTaEJG2LBY96XzG4NRStHktt2ETZitSRN7ZjoKAe43EFKEZfCge4MCgoWYfMptWSqE9sZUzzE" - }, - "rank": 78, - "ownerType": "Account", - "ownerAddress": "23XeH9YWf68FhQX6wdHBjrdz4Yu2N9DuubrthX267FcdWaqPRyKwTnvYa2xRTaEJG2LBY96XzG4NRStHktt2ETZitSRN7ZjoKAe43EFKEZfCge4MCgoWYfMptWSqE9sZUzzE", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23aykwjPGYfhwqkSWksDs1TmU2zkBgMn339shztJ14oXkUmwMcS1E7EMUaCg7HKpdAP4e3NuNruEEeN36t88f6oinwUPNaJqkTtLnPjH4yt2QJsssgpD8BRyusoLADWG7i5h", - "locked_amt": 0, - "reward": 7268548444440, - "owner": { - "Account": "23aykwjPGYfhwqkSWksDs1TmU2zkBgMn339shztJ14oXkUmwMcS1E7EMUaCg7HKpdAP4e3NuNruEEeN36t88f6oinwUPNaJqkTtLnPjH4yt2QJsssgpD8BRyusoLADWG7i5h" - }, - "rank": 79, - "ownerType": "Account", - "ownerAddress": "23aykwjPGYfhwqkSWksDs1TmU2zkBgMn339shztJ14oXkUmwMcS1E7EMUaCg7HKpdAP4e3NuNruEEeN36t88f6oinwUPNaJqkTtLnPjH4yt2QJsssgpD8BRyusoLADWG7i5h", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23fAnih3A9TtZLmwBggRgjGHsEB9qyVTq25C1LahSVH2LigFdjLxveccFgnfQPxWUmMFLJDh8Ptd4NivosEK6pDZoAb48EirBaKqDEExh75iXDsr6k8hjFxV2hJhfGtYLFGr", - "locked_amt": 0, - "reward": 7217958614485, - "owner": { - "Account": "23fAnih3A9TtZLmwBggRgjGHsEB9qyVTq25C1LahSVH2LigFdjLxveccFgnfQPxWUmMFLJDh8Ptd4NivosEK6pDZoAb48EirBaKqDEExh75iXDsr6k8hjFxV2hJhfGtYLFGr" - }, - "rank": 80, - "ownerType": "Account", - "ownerAddress": "23fAnih3A9TtZLmwBggRgjGHsEB9qyVTq25C1LahSVH2LigFdjLxveccFgnfQPxWUmMFLJDh8Ptd4NivosEK6pDZoAb48EirBaKqDEExh75iXDsr6k8hjFxV2hJhfGtYLFGr", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23gx8TwJPoTxFppny5Py7JwH5bGSFfZq5igPYDgoJEg2qhzVgXAsGKsspfB3yWY7k428dH2yhyoXM8LB4vzvRBXmdUsMpYhWc73yvsHaBkwQqcvrZzJRUF7zxEMP5DKVzAFJ", - "locked_amt": 0, - "reward": 7469596802275, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 81, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23hcRjNqzKUhcHevbiP24NThLLbCjMXDFdwFXqgLjmx5cheXE6drSuSiuvvaSc7rbnbR2Yb1NY1x3276WVp47nFUM2ygmmERC4cxuF51aMqu75PVanouxfgmaHtFHjcHoHjj", - "locked_amt": 0, - "reward": 6776178368237, - "owner": { - "Account": "23hcRjNqzKUhcHevbiP24NThLLbCjMXDFdwFXqgLjmx5cheXE6drSuSiuvvaSc7rbnbR2Yb1NY1x3276WVp47nFUM2ygmmERC4cxuF51aMqu75PVanouxfgmaHtFHjcHoHjj" - }, - "rank": 82, - "ownerType": "Account", - "ownerAddress": "23hcRjNqzKUhcHevbiP24NThLLbCjMXDFdwFXqgLjmx5cheXE6drSuSiuvvaSc7rbnbR2Yb1NY1x3276WVp47nFUM2ygmmERC4cxuF51aMqu75PVanouxfgmaHtFHjcHoHjj", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23ws1motGfNRuZ4PJxN9DHnQxLTHMuKFfU97zgpFevcNXpbhesd7e5T2uxDc95tYkY2tgJC3EYfFjJXvRYFK2E2n8ogTjSW5NWurv1sarywLNGNkKqxzhyvSUsANqdRQBnzT", - "locked_amt": 0, - "reward": 7567266204238, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 83, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "244Sywxj7PuMHpcPxemaXLcrY5rPgztra6H9Vz8cU1Ro5v23SxKTfVqr2yS7NXAXE1iq59ndn4aMZmYxuzu3Te3e9fokQKTUkYvFxYg2P2E8EEg1gWUbs3AFL2aNx62HQd7r", - "locked_amt": 0, - "reward": 7181940088941, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 84, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "248rpHWnGPT3puKGBB4CHdaHDnkFU8vaBNCUzV2bJ7JTyXA875PFPAUaFuUrMvmZd5PmBTPx5FhvBoPcddZhn7f97gmiPEpvs5zHEHbhfmWad176yKGwKkA5pvNDeXfEf9Lp", - "locked_amt": 0, - "reward": 7281601926239, - "owner": { - "Account": "248rpHWnGPT3puKGBB4CHdaHDnkFU8vaBNCUzV2bJ7JTyXA875PFPAUaFuUrMvmZd5PmBTPx5FhvBoPcddZhn7f97gmiPEpvs5zHEHbhfmWad176yKGwKkA5pvNDeXfEf9Lp" - }, - "rank": 85, - "ownerType": "Account", - "ownerAddress": "248rpHWnGPT3puKGBB4CHdaHDnkFU8vaBNCUzV2bJ7JTyXA875PFPAUaFuUrMvmZd5PmBTPx5FhvBoPcddZhn7f97gmiPEpvs5zHEHbhfmWad176yKGwKkA5pvNDeXfEf9Lp", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24APW8dZ91iy4kwVAFAZ8rDRg8tZtLuurUB2aERXUKRj5tEMQQhTHQp2p5oxKtZNrpcWUKidK6u9tHTSZy9mzWnKtwu5Hnf1s42bdG4tcZw8edJPzePVWRytGoUXMHmuWWG3", - "locked_amt": 0, - "reward": 7080292530410, - "owner": { - "Account": "24APW8dZ91iy4kwVAFAZ8rDRg8tZtLuurUB2aERXUKRj5tEMQQhTHQp2p5oxKtZNrpcWUKidK6u9tHTSZy9mzWnKtwu5Hnf1s42bdG4tcZw8edJPzePVWRytGoUXMHmuWWG3" - }, - "rank": 86, - "ownerType": "Account", - "ownerAddress": "24APW8dZ91iy4kwVAFAZ8rDRg8tZtLuurUB2aERXUKRj5tEMQQhTHQp2p5oxKtZNrpcWUKidK6u9tHTSZy9mzWnKtwu5Hnf1s42bdG4tcZw8edJPzePVWRytGoUXMHmuWWG3", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24Qzcp49pQt8Rb1bWf65Yq76QysTfyQKUZh7C219345iD6eYfHKptxxAKrqGYLFXKUci3NR5FbLhFjmLnL4jf249hwZK19gY2nqKESbSyfkMVMQHpS5dVVcN2my1KWR3jha4", - "locked_amt": 0, - "reward": 7472061603093, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 87, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24TMiKLMRMv8BJFoGxHGVcHQoqkoEhcEAFDvBmM6iQ6TK3oyeiXSTYdQZSvad8AYaQcfvLSetJg2urFtDJJu5WgakYoXzm2HdwuotouiFCBdWsKe8dVhZgN7ERYhcxKr7LTd", - "locked_amt": 0, - "reward": 6977070492446, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 88, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24YhQRLs3Yv9ChjpwshFQAFqxmYNMzvFynpcGvEYXUCz33whjrQbX4yRvMwSTL5vEivpx8Enm8cxhDeGxXkQRrxtkzZ1WERnBLtz4JsBf6m5QmQzUziTKiofZnRHFRm5zQ1z", - "locked_amt": 0, - "reward": 7276764391833, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 89, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24bfNr8MDUo5xJBecmeGzXDEraax4Cmbnhjyyt5GaL1Vbe6H48ZSYTpmjRDcFRDFzgzuePAPUNcdGMnBzBQBk4zAMgBCtPsY27tBJtKmB1st6qcmpzRR4Er5imxrzvMRnfWc", - "locked_amt": 0, - "reward": 7558684314227, - "owner": { - "Account": "24bfNr8MDUo5xJBecmeGzXDEraax4Cmbnhjyyt5GaL1Vbe6H48ZSYTpmjRDcFRDFzgzuePAPUNcdGMnBzBQBk4zAMgBCtPsY27tBJtKmB1st6qcmpzRR4Er5imxrzvMRnfWc" - }, - "rank": 90, - "ownerType": "Account", - "ownerAddress": "24bfNr8MDUo5xJBecmeGzXDEraax4Cmbnhjyyt5GaL1Vbe6H48ZSYTpmjRDcFRDFzgzuePAPUNcdGMnBzBQBk4zAMgBCtPsY27tBJtKmB1st6qcmpzRR4Er5imxrzvMRnfWc", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25A9dZXaWhLsPtgyfxNtdqpdrNkHzk7C3mJxGgq64NrRd5HhAQab59n6H5hLjkQgJvJWZbuZEm8GQ4UvtdRzXzB6nt8CMHWaNURLmhTzCnxuxCmJf5ws5WxiSUEEUHxaCYvb", - "locked_amt": 0, - "reward": 7607325040606, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 91, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25HZa8omGsExfeeGBcege198RY5mx9fpGsuA3rDUamqCr96tBeprRbm1d1YL1Mr4HXi1YuFJ1ozH9CFRSauaEigtEatc7t321KffgxzFXRQaE8DD83P7NphwANV3jVhFdYa7", - "locked_amt": 0, - "reward": 7410817629537, - "owner": { - "Account": "25HZa8omGsExfeeGBcege198RY5mx9fpGsuA3rDUamqCr96tBeprRbm1d1YL1Mr4HXi1YuFJ1ozH9CFRSauaEigtEatc7t321KffgxzFXRQaE8DD83P7NphwANV3jVhFdYa7" - }, - "rank": 92, - "ownerType": "Account", - "ownerAddress": "25HZa8omGsExfeeGBcege198RY5mx9fpGsuA3rDUamqCr96tBeprRbm1d1YL1Mr4HXi1YuFJ1ozH9CFRSauaEigtEatc7t321KffgxzFXRQaE8DD83P7NphwANV3jVhFdYa7", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25J8LTkT3fj2a5qeRvxCRiXgakMqivtmB4iLzfJqrS3nvtpK1KEZcWrybMcRb7pgmcVepQTEoxTBQwHTvo9ZC7wrXyUVcpGrBSvJwxJxNYM68N8VwwWaBzjgnFTDEEy3hE3H", - "locked_amt": 0, - "reward": 7301740226967, - "owner": { - "Account": "25J8LTkT3fj2a5qeRvxCRiXgakMqivtmB4iLzfJqrS3nvtpK1KEZcWrybMcRb7pgmcVepQTEoxTBQwHTvo9ZC7wrXyUVcpGrBSvJwxJxNYM68N8VwwWaBzjgnFTDEEy3hE3H" - }, - "rank": 93, - "ownerType": "Account", - "ownerAddress": "25J8LTkT3fj2a5qeRvxCRiXgakMqivtmB4iLzfJqrS3nvtpK1KEZcWrybMcRb7pgmcVepQTEoxTBQwHTvo9ZC7wrXyUVcpGrBSvJwxJxNYM68N8VwwWaBzjgnFTDEEy3hE3H", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25KnsEoBhedA6Gnyx67c2i69h3iYJFErFdKVWZygVPgsyc7b5Hz1X6pP1NUREt9DQ9byVxkHtwmoG1Lhirr1QGG1vLLEd6AT8k5HWqZSisqvPexAzzxX63xCGwkW4ZiR2AhL", - "locked_amt": 0, - "reward": 7913298597306, - "owner": { - "Account": "25KnsEoBhedA6Gnyx67c2i69h3iYJFErFdKVWZygVPgsyc7b5Hz1X6pP1NUREt9DQ9byVxkHtwmoG1Lhirr1QGG1vLLEd6AT8k5HWqZSisqvPexAzzxX63xCGwkW4ZiR2AhL" - }, - "rank": 94, - "ownerType": "Account", - "ownerAddress": "25KnsEoBhedA6Gnyx67c2i69h3iYJFErFdKVWZygVPgsyc7b5Hz1X6pP1NUREt9DQ9byVxkHtwmoG1Lhirr1QGG1vLLEd6AT8k5HWqZSisqvPexAzzxX63xCGwkW4ZiR2AhL", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25L2qjS7difo6T1PW871rjnqjQenGCYTVmNZGAoJBqjdaBDNpbJyfo6x16kHjiwaB1eP4k7JzFhz7BCxE83xeYKDAU6rZDr3JeMsTrnJHTfcSCuuskbtL3xhW99qJjG53cQM", - "locked_amt": 0, - "reward": 7081272543114, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 95, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25MjwFViKFCofcwqP9z7Em7hLzx9E9tou7tS9X3SDvzJvRWUixMZmHWQMDNnJZNN8PdzLBy9sj3wjscR4aADVNM7WqMnGfZxNdRAh4nWdW5wpAH8Dqn2hGTLE6kCUcKSMZE4", - "locked_amt": 0, - "reward": 7339003398621, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 96, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25RHcLU8DPEnZm2iXy9qvQj5aDCcpE4B9KJT9VGZS24Qsv3vpbrN7b72Wj7YBH66aXNjm6i2URSQQnpdvQLFp6R7Jt85b8DJVHFrQHvhH35Z2xQXqtLk4Whgng6N4gqgq9h7", - "locked_amt": 0, - "reward": 6931001245450, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 97, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25h5BvLgTAJ57DS4z4fuBJhj17k4iBfEQT6YMbzWPWuFfhUufVfU9ryohapjkA7rkb7xBtCfULZic2eJmCGssKdW2DCfBez26yXUy1qhRBnLQ4QCFadfM96tbUURoVYyYfWJ", - "locked_amt": 0, - "reward": 7241109562888, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 98, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25hHuGqH6MU67syGovZD2L1eEBypLb7fCV2Q7inVWSYSWqto9Yr962rfsUjL5WZjGBwa9EkFf7eBcouKRKNvhYrm7LPRQk6k4JR45KtnKUjXgdDTsmYJ4G49V4o3pT5aGdMP", - "locked_amt": 0, - "reward": 6811442642016, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 99, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25yVrGJKTjZzfiHewWbShsU5s2CpuUGfqG17YLt2sf158fc1EJJEYHnPJKFPjoTXYxe1jJymaYoRbnZ1hSCa1uvdsox36mgoKiBQsw2pVUbWmodz5D2EBzrtBKABBKkrChbK", - "locked_amt": 0, - "reward": 7127400279825, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 100, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY", - "locked_amt": 0, - "reward": 7662628745173, - "owner": { - "Account": "2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY" - }, - "rank": 101, - "ownerType": "Account", - "ownerAddress": "2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26DsWXiCrNxkmCZ1zfCh3XTE2cXqf4NEPGGRMU39vZhNYF6hExrRrzN4nETVYduLuiRAHmtonkP6TvtVnhf9v5YcksgUfhHY78dNgCTSZs9WgHjN4NP2QRiybAaH3xUGeatm", - "locked_amt": 0, - "reward": 6792420959548, - "owner": { - "Account": "26DsWXiCrNxkmCZ1zfCh3XTE2cXqf4NEPGGRMU39vZhNYF6hExrRrzN4nETVYduLuiRAHmtonkP6TvtVnhf9v5YcksgUfhHY78dNgCTSZs9WgHjN4NP2QRiybAaH3xUGeatm" - }, - "rank": 102, - "ownerType": "Account", - "ownerAddress": "26DsWXiCrNxkmCZ1zfCh3XTE2cXqf4NEPGGRMU39vZhNYF6hExrRrzN4nETVYduLuiRAHmtonkP6TvtVnhf9v5YcksgUfhHY78dNgCTSZs9WgHjN4NP2QRiybAaH3xUGeatm", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26LsKrN6Rk4UPALU6msRjkdu5tdSsoNtudcMSvz8Xa2jmp6gDCv964yf7rq4SC4bHDCuoT28KBS8989WfTjBuxTdYqQhCswDL1MiDhXBvraiWPX9Hjhvi1X4pbs757sHYXGb", - "locked_amt": 0, - "reward": 7084882997029, - "owner": { - "Account": "26LsKrN6Rk4UPALU6msRjkdu5tdSsoNtudcMSvz8Xa2jmp6gDCv964yf7rq4SC4bHDCuoT28KBS8989WfTjBuxTdYqQhCswDL1MiDhXBvraiWPX9Hjhvi1X4pbs757sHYXGb" - }, - "rank": 103, - "ownerType": "Account", - "ownerAddress": "26LsKrN6Rk4UPALU6msRjkdu5tdSsoNtudcMSvz8Xa2jmp6gDCv964yf7rq4SC4bHDCuoT28KBS8989WfTjBuxTdYqQhCswDL1MiDhXBvraiWPX9Hjhvi1X4pbs757sHYXGb", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26N7gdQRjgw9atu8nN5ua1bfxBp7kdNvE5BRHUvaMFGjwrNcRrDNedhK2RrqVooRJ8SMGi1iYiW4Wnysx4SMcbUPffwNeY4T1wQLt5ESdYjh91exuhR15S9c3o7Eu6EZNudz", - "locked_amt": 0, - "reward": 7122737082704, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 104, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26TVUnyxdYwX3Sipc2RLAwGnE6gLHW86sudf2HU3xP8S7NbAoiJDUE2XTn1FaEKV32FvZpCf9SjsgkYatddn6BsoBhMTmXyd1TMpzgFyJ8rGNXNN2R9LBuHfCXoXXj3MtNJr", - "locked_amt": 0, - "reward": 6873120849995, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 105, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26brdzqNXEG1jTzCubJAPhks18bSSDY4n21ZW6VLYkCv6bBUdBAZZAbn1Coz1LPBYc4uEekBbzFnZvhL9untGCqRamhZS2cBV51fdZog3qkP3NbMEaqgNMcKEahAFV8t2Cke", - "locked_amt": 0, - "reward": 7630941111854, - "owner": { - "Account": "26brdzqNXEG1jTzCubJAPhks18bSSDY4n21ZW6VLYkCv6bBUdBAZZAbn1Coz1LPBYc4uEekBbzFnZvhL9untGCqRamhZS2cBV51fdZog3qkP3NbMEaqgNMcKEahAFV8t2Cke" - }, - "rank": 106, - "ownerType": "Account", - "ownerAddress": "26brdzqNXEG1jTzCubJAPhks18bSSDY4n21ZW6VLYkCv6bBUdBAZZAbn1Coz1LPBYc4uEekBbzFnZvhL9untGCqRamhZS2cBV51fdZog3qkP3NbMEaqgNMcKEahAFV8t2Cke", - "hasSeparateOwner": false - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26zCm7Hqi4Gv42D39zx9p8tG1aHDuVRaYABpNGdmcusWJchmTRRHtagWFZo76SMyCUui3JvnFRNekNu6WShm6mW9F8uEucUau8H3cCpm1osc4gZLd8WaCaGzWV2gvt8dhyga", - "locked_amt": 0, - "reward": 7199704091617, - "owner": { - "Account": "26zCm7Hqi4Gv42D39zx9p8tG1aHDuVRaYABpNGdmcusWJchmTRRHtagWFZo76SMyCUui3JvnFRNekNu6WShm6mW9F8uEucUau8H3cCpm1osc4gZLd8WaCaGzWV2gvt8dhyga" - }, - "rank": 107, - "ownerType": "Account", - "ownerAddress": "26zCm7Hqi4Gv42D39zx9p8tG1aHDuVRaYABpNGdmcusWJchmTRRHtagWFZo76SMyCUui3JvnFRNekNu6WShm6mW9F8uEucUau8H3cCpm1osc4gZLd8WaCaGzWV2gvt8dhyga", - "hasSeparateOwner": false - }, - { - "amount": 450000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "qeNnTyhWnvJBxSX8D5YS5QCLAtPoZQFCKEHVJoGiDTyFiGz6jnRuz9erafZxLSfWoJNwfz4HoHmKXBfcifHcF8F2sqG5LFSNopLJbkZzGXLaUFFikme1f1PiNiMxxMNkmqP", - "locked_amt": 50000000000000, - "reward": 6350603533289, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 108, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 450000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "ykesisNk9pgYFQm65meee5TbTLvrxgS9Mzq1P4GKr4XFXXvN5iraQw1YaNV9H11nFytuGHmx7UngaaTuTnqEkDeGBHvgBE1SZ3PwTsQQRmYsdX2dCKEVxJQbZv47yntfvtQ", - "locked_amt": 50000000000000, - "reward": 5766099832210, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 109, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 450000000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "26KjFyAKT9sMsASS2GTdrAgBswwwUvDAWwRdHWz2Hxp1BLa5VaD5LPAEPocHzsV4CEq3AM66qhUPAsB45FjsYzJB4wVU55ibUT3CNY8SxTgRfbVBpy5BSa4SDmZ7xff7cFJH", - "locked_amt": 50000000000000, - "reward": 5972684252228, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 110, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 360000000000000, - "eligibility": 58320, - "faults": 3, - "hard_faults": 0, - "key": "26LZQDrSNPHgv5HkBdFhYr5TEm3y9zDwceotnywHg9Dproqd3yHymHZskEFxjSStfyyqNo1vvAF1h4nEXEy378W87EQ1p7EC9rfES65C6xGQDS7ujQCAPMoQBp3F6dopZk4i", - "locked_amt": 140000000000000, - "reward": 7310999841539, - "owner": { - "Account": "26LZQDrSNPHgv5HkBdFhYr5TEm3y9zDwceotnywHg9Dproqd3yHymHZskEFxjSStfyyqNo1vvAF1h4nEXEy378W87EQ1p7EC9rfES65C6xGQDS7ujQCAPMoQBp3F6dopZk4i" - }, - "rank": 111, - "ownerType": "Account", - "ownerAddress": "26LZQDrSNPHgv5HkBdFhYr5TEm3y9zDwceotnywHg9Dproqd3yHymHZskEFxjSStfyyqNo1vvAF1h4nEXEy378W87EQ1p7EC9rfES65C6xGQDS7ujQCAPMoQBp3F6dopZk4i", - "hasSeparateOwner": false - }, - { - "amount": 135000000000000, - "eligibility": 60480, - "faults": 6, - "hard_faults": 0, - "key": "zKSqc6213BgJbtYtYGUFWVSPzGxWWdBH1tXkpS62cGRNuqJ2NPZK9fpKpw3guDuRLUXLRiL3ZmSVLiKoWU47mXWNszSMXEbe5xiykoa1DZoyNRVbCBKmy7zkwTR7Yesvq8U", - "locked_amt": 315000000000000, - "reward": 0, - "owner": { - "Account": "zKSqc6213BgJbtYtYGUFWVSPzGxWWdBH1tXkpS62cGRNuqJ2NPZK9fpKpw3guDuRLUXLRiL3ZmSVLiKoWU47mXWNszSMXEbe5xiykoa1DZoyNRVbCBKmy7zkwTR7Yesvq8U" - }, - "rank": 112, - "ownerType": "Account", - "ownerAddress": "zKSqc6213BgJbtYtYGUFWVSPzGxWWdBH1tXkpS62cGRNuqJ2NPZK9fpKpw3guDuRLUXLRiL3ZmSVLiKoWU47mXWNszSMXEbe5xiykoa1DZoyNRVbCBKmy7zkwTR7Yesvq8U", - "hasSeparateOwner": false - }, - { - "amount": 90000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "zT4jzP1bTetabxSoxPxPRYQXP2Br5aP7U6aE6m3SBYC3GZswBfiFFz9Uavn4xo1ZTaWAKrNAntup22cM7F1rcDVg9zawBoVgHSAtzKVbxhXbm6dZXtgeMKDrcrJehAQsa8d", - "locked_amt": 0, - "reward": 50544026754, - "owner": { - "Account": "zT4jzP1bTetabxSoxPxPRYQXP2Br5aP7U6aE6m3SBYC3GZswBfiFFz9Uavn4xo1ZTaWAKrNAntup22cM7F1rcDVg9zawBoVgHSAtzKVbxhXbm6dZXtgeMKDrcrJehAQsa8d" - }, - "rank": 113, - "ownerType": "Account", - "ownerAddress": "zT4jzP1bTetabxSoxPxPRYQXP2Br5aP7U6aE6m3SBYC3GZswBfiFFz9Uavn4xo1ZTaWAKrNAntup22cM7F1rcDVg9zawBoVgHSAtzKVbxhXbm6dZXtgeMKDrcrJehAQsa8d", - "hasSeparateOwner": false - }, - { - "amount": 59990000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "x8NZbycsc1Cjz4iW6DriJxkn68h5KaCjuunuFDr5bcjsDSieRCfL51SokQWnpFR46BBhLVPcv8AtuRdVYghZSvWa31mTbE425pFZZYaMMCfLrinjj4bbBFhsZz3PdM3xMp8", - "locked_amt": 0, - "reward": 398037872095, - "owner": { - "Account": "x8NZbycsc1Cjz4iW6DriJxkn68h5KaCjuunuFDr5bcjsDSieRCfL51SokQWnpFR46BBhLVPcv8AtuRdVYghZSvWa31mTbE425pFZZYaMMCfLrinjj4bbBFhsZz3PdM3xMp8" - }, - "rank": 114, - "ownerType": "Account", - "ownerAddress": "x8NZbycsc1Cjz4iW6DriJxkn68h5KaCjuunuFDr5bcjsDSieRCfL51SokQWnpFR46BBhLVPcv8AtuRdVYghZSvWa31mTbE425pFZZYaMMCfLrinjj4bbBFhsZz3PdM3xMp8", - "hasSeparateOwner": false - }, - { - "amount": 50000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "yLWh6C8gGG3PhkzMTz7WUTyXQLudWLN7EXu5PZaEaKJT3aQa2Sf9kodH4HF3WQK3mUfh5edqsGEBjW9pq6JHLigezJPZyYnUAnjMRuKFstBktwf5rSw1TgD8Dwz1SmNi6nV", - "locked_amt": 0, - "reward": 14567264499, - "owner": { - "Account": "yLWh6C8gGG3PhkzMTz7WUTyXQLudWLN7EXu5PZaEaKJT3aQa2Sf9kodH4HF3WQK3mUfh5edqsGEBjW9pq6JHLigezJPZyYnUAnjMRuKFstBktwf5rSw1TgD8Dwz1SmNi6nV" - }, - "rank": 115, - "ownerType": "Account", - "ownerAddress": "yLWh6C8gGG3PhkzMTz7WUTyXQLudWLN7EXu5PZaEaKJT3aQa2Sf9kodH4HF3WQK3mUfh5edqsGEBjW9pq6JHLigezJPZyYnUAnjMRuKFstBktwf5rSw1TgD8Dwz1SmNi6nV", - "hasSeparateOwner": false - }, - { - "amount": 40055000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "pAsCGjoiMA2vo1TRxzsxjUvtQcKVd65skAZSU5gr2Ux9u42t8zWgv66rWP2fe6vYDPmXEF9stEvcjw9NdJxmVLfGGueDqgmZcLXhyafoRC4rrgRkMfUPHmoXvzEqmVdZnHv", - "locked_amt": 0, - "reward": 96089500925, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 116, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 30240000000000, - "eligibility": 58320, - "faults": 7, - "hard_faults": 0, - "key": "thrWTo9XztqcpodzucqDjoEv2Wk8C6XEhw9DQKcZ8uMjF5NHBeFwysvboLuqbwQwESRVfzJBSvcTZNXTsr25zasagiuseY4tkF1HyK25rg73nJxq86gZQK14bFXMVPLwfpe", - "locked_amt": 469760000000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 117, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 30019000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "xa82X7cdvvdepZr7BT6tvXBpYTJTVi67FbvK8TgxgJH3ykVzTyXF8XtN86Lqu5PYesdTNjHywjRkZqe743t2F71cuiTiGAFDVZaDM5kHNE3NKrhMyY8p4baw2QyzAW9pCRz", - "locked_amt": 0, - "reward": 43223088346, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 118, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 30000000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "22nTqwGqBUcbwXbuuQFpjZtjsFtJhRqktYavVdBASaor7tpcQLNcpLC7S2QRArCvw9hDYa7rNcb3jsJZzeLw7C9Kk56qT92bAFi6P4bpSqKvBtRHMCHJWmEaNGotZvGMYBGU", - "locked_amt": 0, - "reward": 148676341284, - "owner": { - "Account": "22nTqwGqBUcbwXbuuQFpjZtjsFtJhRqktYavVdBASaor7tpcQLNcpLC7S2QRArCvw9hDYa7rNcb3jsJZzeLw7C9Kk56qT92bAFi6P4bpSqKvBtRHMCHJWmEaNGotZvGMYBGU" - }, - "rank": 119, - "ownerType": "Account", - "ownerAddress": "22nTqwGqBUcbwXbuuQFpjZtjsFtJhRqktYavVdBASaor7tpcQLNcpLC7S2QRArCvw9hDYa7rNcb3jsJZzeLw7C9Kk56qT92bAFi6P4bpSqKvBtRHMCHJWmEaNGotZvGMYBGU", - "hasSeparateOwner": false - }, - { - "amount": 29000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "y1q47PKFhxXHM3KuvArt1DBrGjyER2r4kt4BYcbWNFkjrWCtSuX1Ev2Lw6X1q6QsWHAvkAJawQ7MZyvZsjE5iTPXikbRS3HmsSwrRNC3vLRCMkfLPxqqFED7SHevaDrQzFK", - "locked_amt": 0, - "reward": 103649098775, - "owner": { - "Account": "y1q47PKFhxXHM3KuvArt1DBrGjyER2r4kt4BYcbWNFkjrWCtSuX1Ev2Lw6X1q6QsWHAvkAJawQ7MZyvZsjE5iTPXikbRS3HmsSwrRNC3vLRCMkfLPxqqFED7SHevaDrQzFK" - }, - "rank": 120, - "ownerType": "Account", - "ownerAddress": "y1q47PKFhxXHM3KuvArt1DBrGjyER2r4kt4BYcbWNFkjrWCtSuX1Ev2Lw6X1q6QsWHAvkAJawQ7MZyvZsjE5iTPXikbRS3HmsSwrRNC3vLRCMkfLPxqqFED7SHevaDrQzFK", - "hasSeparateOwner": false - }, - { - "amount": 25000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "zFVXTQZfY6gB2rWZFEm4ToWY2NKrpgeswTboWMAe7cjzaqHjsdGuADp8GsYzeruRkP3ZozA34mhWedEHkEiUr73iv8EcK3A192Y5b2uQYxLgprkZ2u8WKZyfDuZiyy4yEuL", - "locked_amt": 0, - "reward": 29167460855, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 121, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 24000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "sN4GfdHXZuD6kzXvd2eXaNXeL4GoGqRn5Q6bZZFGQFYQwiq5xaeLP7pJHCA5aHsLXpMr4CHtD5fQyVRngmk9v4SC5y7ugLBQ2yuJt1GkxGPQtWnJqafNQHhbH9xYwDn7wEk", - "locked_amt": 0, - "reward": 43268151637, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 122, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 20000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "nhBn2phxNgSd9AmuzGzNvzk5ysQ2x28MwpYhNTk1qijTy73XXnB6oXk3hWgH1AJEApdzBRRa4UGDxqbhDWAGmSjdikR7EzPaXhCBUgyZ2gESgEEu9MCK1VT1FFRGwEwKrgS", - "locked_amt": 0, - "reward": 44420016168, - "owner": { - "Account": "nhBn2phxNgSd9AmuzGzNvzk5ysQ2x28MwpYhNTk1qijTy73XXnB6oXk3hWgH1AJEApdzBRRa4UGDxqbhDWAGmSjdikR7EzPaXhCBUgyZ2gESgEEu9MCK1VT1FFRGwEwKrgS" - }, - "rank": 123, - "ownerType": "Account", - "ownerAddress": "nhBn2phxNgSd9AmuzGzNvzk5ysQ2x28MwpYhNTk1qijTy73XXnB6oXk3hWgH1AJEApdzBRRa4UGDxqbhDWAGmSjdikR7EzPaXhCBUgyZ2gESgEEu9MCK1VT1FFRGwEwKrgS", - "hasSeparateOwner": false - }, - { - "amount": 20000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "xg5Ejj1FWNqLmXM4xP1SjDKmtWL6Zu6oMvVoLCmmFq23P3Trw3PXrh8xB5uFd99qxLvgC7cxxcskoYA1gF2rtqWJeQbxmfGGnFtiSaJHpGEq1rvci6NhY1LHHfMYkoNpcNh", - "locked_amt": 0, - "reward": 31633498817, - "owner": { - "Account": "xg5Ejj1FWNqLmXM4xP1SjDKmtWL6Zu6oMvVoLCmmFq23P3Trw3PXrh8xB5uFd99qxLvgC7cxxcskoYA1gF2rtqWJeQbxmfGGnFtiSaJHpGEq1rvci6NhY1LHHfMYkoNpcNh" - }, - "rank": 124, - "ownerType": "Account", - "ownerAddress": "xg5Ejj1FWNqLmXM4xP1SjDKmtWL6Zu6oMvVoLCmmFq23P3Trw3PXrh8xB5uFd99qxLvgC7cxxcskoYA1gF2rtqWJeQbxmfGGnFtiSaJHpGEq1rvci6NhY1LHHfMYkoNpcNh", - "hasSeparateOwner": false - }, - { - "amount": 19995000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "24LaJTrgM9dczt1eRXjxeTdg1pGoyiGTGqWmdQrTfN8XwXD61ooEGiifhMDFcRZ6ZJyuniwwy9GtUUQAxzkGT8YHF71NrUn9fnaaBNfMCDZTpnmkK4JihDyuPoSLjQQDPbzE", - "locked_amt": 0, - "reward": 51527623616, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 125, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 19800000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "rogBxKsqTJ6XHv2b7JoQ3UGGyYm5gCLvfnx6x4wXRAdJZXPaSSELitiAwuv6wJiwxNX43uw41FPGwHfoHcwJMBSNjCeKEBoEvdS2QgE2mt8DuatKPFKXu7Q3bCaeH6Bbpiu", - "locked_amt": 0, - "reward": 90431824794, - "owner": { - "Account": "rogBxKsqTJ6XHv2b7JoQ3UGGyYm5gCLvfnx6x4wXRAdJZXPaSSELitiAwuv6wJiwxNX43uw41FPGwHfoHcwJMBSNjCeKEBoEvdS2QgE2mt8DuatKPFKXu7Q3bCaeH6Bbpiu" - }, - "rank": 126, - "ownerType": "Account", - "ownerAddress": "rogBxKsqTJ6XHv2b7JoQ3UGGyYm5gCLvfnx6x4wXRAdJZXPaSSELitiAwuv6wJiwxNX43uw41FPGwHfoHcwJMBSNjCeKEBoEvdS2QgE2mt8DuatKPFKXu7Q3bCaeH6Bbpiu", - "hasSeparateOwner": false - }, - { - "amount": 19500000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "24YAJKhrrTrjYAiFD1m5ezRLZHsRPcSSDRMZhxbtsZPpBCM8usafREJWuzZn2hZHZqL1BQyDkGa3BiQ8T6CLfnXBLzjhFLq32djemxUwkuPq2eXEaZw3XrGxoNBGnUw47cJo", - "locked_amt": 0, - "reward": 3180286565, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 127, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 15000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "24Ujm5AZ1JfSXe1PsVohP4aeuFRRM3TY9sHVULR5WKh7qkK5JxVR7xJBSEFDd81bsFtTFXq9ANuiEEF9jZRVDVHEWSXVmS249fkgc3KnxWse2wrQrVGLmDLzNtySddyiJuCS", - "locked_amt": 0, - "reward": 248217488, - "owner": { - "Account": "24Ujm5AZ1JfSXe1PsVohP4aeuFRRM3TY9sHVULR5WKh7qkK5JxVR7xJBSEFDd81bsFtTFXq9ANuiEEF9jZRVDVHEWSXVmS249fkgc3KnxWse2wrQrVGLmDLzNtySddyiJuCS" - }, - "rank": 128, - "ownerType": "Account", - "ownerAddress": "24Ujm5AZ1JfSXe1PsVohP4aeuFRRM3TY9sHVULR5WKh7qkK5JxVR7xJBSEFDd81bsFtTFXq9ANuiEEF9jZRVDVHEWSXVmS249fkgc3KnxWse2wrQrVGLmDLzNtySddyiJuCS", - "hasSeparateOwner": false - }, - { - "amount": 14900000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "25qis7vbcPSTuxaAtrmidrjQ2uHrwJ2LTmZTzDJDiytTnnFg67KDgDE4bmPJYatGDH9RcaM194eHZUUUQQ8VPhUVN6yzFH8KxVUWU3CYw2i9dEWtjigRSJ4mnhAvsZzBMo9V", - "locked_amt": 0, - "reward": 1256601106, - "owner": { - "Account": "25qis7vbcPSTuxaAtrmidrjQ2uHrwJ2LTmZTzDJDiytTnnFg67KDgDE4bmPJYatGDH9RcaM194eHZUUUQQ8VPhUVN6yzFH8KxVUWU3CYw2i9dEWtjigRSJ4mnhAvsZzBMo9V" - }, - "rank": 129, - "ownerType": "Account", - "ownerAddress": "25qis7vbcPSTuxaAtrmidrjQ2uHrwJ2LTmZTzDJDiytTnnFg67KDgDE4bmPJYatGDH9RcaM194eHZUUUQQ8VPhUVN6yzFH8KxVUWU3CYw2i9dEWtjigRSJ4mnhAvsZzBMo9V", - "hasSeparateOwner": false - }, - { - "amount": 14850000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "zgcEqSf9XYbhEpQiCT8NXQSAHUfvTSHbu1fdTBG1dbAKz1p3qEdjCJhaxFN7rbh8xWo9A18fQ3JuUmLxqEmQnpAKsHp48KmKfp5My67gGTUpcmWVd8i3KNpxR8TuTm3zqMr", - "locked_amt": 0, - "reward": 113344220531, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 130, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 14700000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "22tKrP4yhaGqq6AxvtPCQyMPXHQMsNraVi4ZQLyHnfcj1fF1zWFZG2LHcDaCCxLJ7btE2dkg7U8CEzUNFq95HhBKDvx9CfWiaB4BW6Zgwikj5oEoHBCNBjhE34cY3ZrFxM7K", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 131, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 14600000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "xn8a8WN4GkU2uqBCv7VfHFgCDKaQY9kmeXSQhBkLtRVRpRY1JM7J59MaWRtG8RRQRJU1Foc24hQHHpqR63cQvqzqvbZd3nz6bR3JBjpRrezBaB7kPZ1ecLZYQcChS9q2xYd", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 132, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 14500000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "oE6fewnMgBQSMQ8CMefzpqz4Hh5d6CT4XYiYr5QznWdh4n7ktRxWkxi743fQQ1eW9J3BC6xYBJ6tY587uGxEyATUjNeE432J5S8cq86FeiRYSsJJGvU2v9AchPT2v7Ff58T", - "locked_amt": 0, - "reward": 111241019205, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 133, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 10000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "pgRMt3GMfwftnDQVCTZoXaVuty8Z4fkBqX28Jc5s4dtT63osdLAQaCFhQHNRKqVuyWoqeJa4Pi8fgnuLx8H9VtvJK4X5kiKSVTSwZUv5Lf7Tvnd2MQuQPvdKV8eyKGTPWds", - "locked_amt": 0, - "reward": 667084499, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 134, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 10000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "zvpj2P5DPpjwxf72kb4cJYmPSEEcrPsUxL7pcpdgE4qXJYCSJxPvPniu94CNVXnEwLjMBEgL33jkv3Mw8fh7nKWsDgJPCT2PCzND8BMQ7cszuQR9PtB3a3Sm3xbLbr1ub4k", - "locked_amt": 0, - "reward": 30329930041, - "owner": { - "Account": "zvpj2P5DPpjwxf72kb4cJYmPSEEcrPsUxL7pcpdgE4qXJYCSJxPvPniu94CNVXnEwLjMBEgL33jkv3Mw8fh7nKWsDgJPCT2PCzND8BMQ7cszuQR9PtB3a3Sm3xbLbr1ub4k" - }, - "rank": 135, - "ownerType": "Account", - "ownerAddress": "zvpj2P5DPpjwxf72kb4cJYmPSEEcrPsUxL7pcpdgE4qXJYCSJxPvPniu94CNVXnEwLjMBEgL33jkv3Mw8fh7nKWsDgJPCT2PCzND8BMQ7cszuQR9PtB3a3Sm3xbLbr1ub4k", - "hasSeparateOwner": false - }, - { - "amount": 9990000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "22ATFnKCenVfSyZ7Wxfvy9aYSx6ff6aPGLKX7ndnMCLKpsfRG1r5a5psy6PZNH3Ye1rkg2GsrGTHoNBP3hovNcJVyrNFNCPFMKzAe2PTHfUTJ6yupjSHwKifh28jtJWCMvou", - "locked_amt": 0, - "reward": 62522807257, - "owner": { - "Account": "22ATFnKCenVfSyZ7Wxfvy9aYSx6ff6aPGLKX7ndnMCLKpsfRG1r5a5psy6PZNH3Ye1rkg2GsrGTHoNBP3hovNcJVyrNFNCPFMKzAe2PTHfUTJ6yupjSHwKifh28jtJWCMvou" - }, - "rank": 136, - "ownerType": "Account", - "ownerAddress": "22ATFnKCenVfSyZ7Wxfvy9aYSx6ff6aPGLKX7ndnMCLKpsfRG1r5a5psy6PZNH3Ye1rkg2GsrGTHoNBP3hovNcJVyrNFNCPFMKzAe2PTHfUTJ6yupjSHwKifh28jtJWCMvou", - "hasSeparateOwner": false - }, - { - "amount": 9900000000000, - "eligibility": 25920, - "faults": 0, - "hard_faults": 0, - "key": "rFiWhUsdEpsmGh4HSYEWZCr6P8NuQ732ye9NDVdrh49KWQYB41pTFnWYt2e8ujCotA1EZpZm6vGYPKABNiwF3bVz3c3fc9Zotxe6MhsG2fBYRc8Au4s1fnpPvGBzQHwRej2", - "locked_amt": 0, - "reward": 7415497601, - "owner": { - "Account": "rFiWhUsdEpsmGh4HSYEWZCr6P8NuQ732ye9NDVdrh49KWQYB41pTFnWYt2e8ujCotA1EZpZm6vGYPKABNiwF3bVz3c3fc9Zotxe6MhsG2fBYRc8Au4s1fnpPvGBzQHwRej2" - }, - "rank": 137, - "ownerType": "Account", - "ownerAddress": "rFiWhUsdEpsmGh4HSYEWZCr6P8NuQ732ye9NDVdrh49KWQYB41pTFnWYt2e8ujCotA1EZpZm6vGYPKABNiwF3bVz3c3fc9Zotxe6MhsG2fBYRc8Au4s1fnpPvGBzQHwRej2", - "hasSeparateOwner": false - }, - { - "amount": 7990000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "yB2GHYx8pRdPzNDLTrFFmrcZFYE9GTENjNAfMZKSYQAPK8tNWePqtcFRpJqq4dtTtR4dzunm6UsUnuo62GfbWDuAfWvpPnfoMVUVFHiZnWwdUK86jo5nFNGvVy2G9qCYZDt", - "locked_amt": 0, - "reward": 107061662910, - "owner": { - "Account": "yB2GHYx8pRdPzNDLTrFFmrcZFYE9GTENjNAfMZKSYQAPK8tNWePqtcFRpJqq4dtTtR4dzunm6UsUnuo62GfbWDuAfWvpPnfoMVUVFHiZnWwdUK86jo5nFNGvVy2G9qCYZDt" - }, - "rank": 138, - "ownerType": "Account", - "ownerAddress": "yB2GHYx8pRdPzNDLTrFFmrcZFYE9GTENjNAfMZKSYQAPK8tNWePqtcFRpJqq4dtTtR4dzunm6UsUnuo62GfbWDuAfWvpPnfoMVUVFHiZnWwdUK86jo5nFNGvVy2G9qCYZDt", - "hasSeparateOwner": false - }, - { - "amount": 5000000000000, - "eligibility": 49680, - "faults": 1, - "hard_faults": 0, - "key": "xPwM88RhuBXraCa1Lapp561EyxVe7F7RG6v2MM196Hs6ok71tZVPRZ7pRHXuEqUvSbh1rzTDyJ9Q4EnkrQ8kvYnmHUtmr5GFvJFG67xHuL3qVgQpWjmT1qtxTsfJfPE7r78", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 139, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4990000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "261taMMBXpRG7T74sHjLyJLyag55JqFKwkfBs9S8NVKLjsjFUT7nJvkxCjd888kyMdEaesKZ9CDrdYRfJ4NwSMLsYo9rXpyqd7utDf73P81Shj1TDdCvAJdmY9ScyEGsQpMJ", - "locked_amt": 0, - "reward": 527462162, - "owner": { - "Account": "261taMMBXpRG7T74sHjLyJLyag55JqFKwkfBs9S8NVKLjsjFUT7nJvkxCjd888kyMdEaesKZ9CDrdYRfJ4NwSMLsYo9rXpyqd7utDf73P81Shj1TDdCvAJdmY9ScyEGsQpMJ" - }, - "rank": 140, - "ownerType": "Account", - "ownerAddress": "261taMMBXpRG7T74sHjLyJLyag55JqFKwkfBs9S8NVKLjsjFUT7nJvkxCjd888kyMdEaesKZ9CDrdYRfJ4NwSMLsYo9rXpyqd7utDf73P81Shj1TDdCvAJdmY9ScyEGsQpMJ", - "hasSeparateOwner": false - }, - { - "amount": 4950000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "nWDih3TSkrMG1X4BG8A12BRQcrqdV5rd1YnCyieromYEcJZ8F8Ep3tA1DQyGFoAudgNVRwMBT5ZcmkMnG4aFgTh6DAonSun8WdnQtvCZUDAUWjSx7JoH4oD4N8qkWoiuy9X", - "locked_amt": 0, - "reward": 76267293927, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 141, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4950000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "sa2MdiJhznhPH64AVHYGoZkVW162AEB2UXUYCyLNnW6PdqLb3gCD98bRYUHYtBnrn8Swu2Hgx5ZshKwS68hPcXRncC9dsiiJqAwNDupteayAPmnR5hm1ABkNsKPNdXXZoi7", - "locked_amt": 0, - "reward": 75957961298, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 142, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4950000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "y7FSjpyFJAPiHjJnwuoNz1DpBWzoFqto6AvxMNeeYGS3H8Tboi5kY8h5op61XB1u7BgCY1PRzBGu3ZDAWzRfEJgZ9FLq3KNVe581QsFaPcr95pfaW4Qev9EzoiozTAffbV3", - "locked_amt": 0, - "reward": 62458918742, - "owner": { - "Account": "y7FSjpyFJAPiHjJnwuoNz1DpBWzoFqto6AvxMNeeYGS3H8Tboi5kY8h5op61XB1u7BgCY1PRzBGu3ZDAWzRfEJgZ9FLq3KNVe581QsFaPcr95pfaW4Qev9EzoiozTAffbV3" - }, - "rank": 143, - "ownerType": "Account", - "ownerAddress": "y7FSjpyFJAPiHjJnwuoNz1DpBWzoFqto6AvxMNeeYGS3H8Tboi5kY8h5op61XB1u7BgCY1PRzBGu3ZDAWzRfEJgZ9FLq3KNVe581QsFaPcr95pfaW4Qev9EzoiozTAffbV3", - "hasSeparateOwner": false - }, - { - "amount": 4950000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "21zbWCbNJBpp6wBZ88cUGxD2ywSHthXEoBnz2hGbBShMnmJj8BbYbf4DM1ZZmRktd15XftQTVj6dv717LxKnXtAKFoUfN2tSBec1R1E2zWZibnRaUqR2WT3YfYc8QX2mSQiE", - "locked_amt": 0, - "reward": 17240988191, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 144, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4900000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "qTnyKiDC7ou7aELMngJCzWNBP3qSo9DRwDE2cjPr34ck4UKbqxTSL5bkDSHyKRJ22o4Wgqwu8ZnZ7ijfQcQGtsFtmajYqToc3FbQ6VxpFpT52snvhXb6BtotruZtC2pzTMN", - "locked_amt": 0, - "reward": 47493792295, - "owner": { - "Account": "qTnyKiDC7ou7aELMngJCzWNBP3qSo9DRwDE2cjPr34ck4UKbqxTSL5bkDSHyKRJ22o4Wgqwu8ZnZ7ijfQcQGtsFtmajYqToc3FbQ6VxpFpT52snvhXb6BtotruZtC2pzTMN" - }, - "rank": 145, - "ownerType": "Account", - "ownerAddress": "qTnyKiDC7ou7aELMngJCzWNBP3qSo9DRwDE2cjPr34ck4UKbqxTSL5bkDSHyKRJ22o4Wgqwu8ZnZ7ijfQcQGtsFtmajYqToc3FbQ6VxpFpT52snvhXb6BtotruZtC2pzTMN", - "hasSeparateOwner": false - }, - { - "amount": 4900000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "r4tt3NG44HnikAUPRCFNy2PVt6UKXWckvQMW7wGUX2qDbRyv5JaEWG64b4qk42Bo1mZ4UbD5gATbNHKxFMZFWD3c8p8FRmJG4yf1CpM9ZNdfL4quCGtvtRTqNTi8mdhMZK2", - "locked_amt": 0, - "reward": 104832296009, - "owner": { - "Account": "r4tt3NG44HnikAUPRCFNy2PVt6UKXWckvQMW7wGUX2qDbRyv5JaEWG64b4qk42Bo1mZ4UbD5gATbNHKxFMZFWD3c8p8FRmJG4yf1CpM9ZNdfL4quCGtvtRTqNTi8mdhMZK2" - }, - "rank": 146, - "ownerType": "Account", - "ownerAddress": "r4tt3NG44HnikAUPRCFNy2PVt6UKXWckvQMW7wGUX2qDbRyv5JaEWG64b4qk42Bo1mZ4UbD5gATbNHKxFMZFWD3c8p8FRmJG4yf1CpM9ZNdfL4quCGtvtRTqNTi8mdhMZK2", - "hasSeparateOwner": false - }, - { - "amount": 4900000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "2262WQqqiFonBaKtdKdsAxurcYuD3Ag5C6QAfZXQXq6DwufZUbFP5CEvU6hYAvURQWY2iRmfQZD2HqniuYFqXTFE1R2wjBkoy7zNY9GWzduegdzTBYk5PpxT5W8t9U3P29xU", - "locked_amt": 0, - "reward": 114727950696, - "owner": { - "Account": "2262WQqqiFonBaKtdKdsAxurcYuD3Ag5C6QAfZXQXq6DwufZUbFP5CEvU6hYAvURQWY2iRmfQZD2HqniuYFqXTFE1R2wjBkoy7zNY9GWzduegdzTBYk5PpxT5W8t9U3P29xU" - }, - "rank": 147, - "ownerType": "Account", - "ownerAddress": "2262WQqqiFonBaKtdKdsAxurcYuD3Ag5C6QAfZXQXq6DwufZUbFP5CEvU6hYAvURQWY2iRmfQZD2HqniuYFqXTFE1R2wjBkoy7zNY9GWzduegdzTBYk5PpxT5W8t9U3P29xU", - "hasSeparateOwner": false - }, - { - "amount": 4900000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "25Q7QA1w5MS3cJaurwu7YnezymMt4gt8JwjLdRwUFfF8BLCERdSNpDfNbV54R28GFzPP5vjBPnw1iUYxSaomSdXa64FwZz4XgaZcEeF3RB5jn7Spvbe9qXAMf9grR6vAi5p1", - "locked_amt": 0, - "reward": 103836672999, - "owner": { - "Account": "25Q7QA1w5MS3cJaurwu7YnezymMt4gt8JwjLdRwUFfF8BLCERdSNpDfNbV54R28GFzPP5vjBPnw1iUYxSaomSdXa64FwZz4XgaZcEeF3RB5jn7Spvbe9qXAMf9grR6vAi5p1" - }, - "rank": 148, - "ownerType": "Account", - "ownerAddress": "25Q7QA1w5MS3cJaurwu7YnezymMt4gt8JwjLdRwUFfF8BLCERdSNpDfNbV54R28GFzPP5vjBPnw1iUYxSaomSdXa64FwZz4XgaZcEeF3RB5jn7Spvbe9qXAMf9grR6vAi5p1", - "hasSeparateOwner": false - }, - { - "amount": 4900000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "262ZminCbPCFP6Cq5LfzWd8h58CJ1dRKKmV59RVYRhug4ymFFZ94sTzDqQhKKQj4Ef3a8SBAP1TcfM15HCGTEeaT3jHeFJwHQS3agTbcjVTcsPzfg5cgmsSLHkSBfJ3ret9Z", - "locked_amt": 0, - "reward": 58878012343, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 149, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4888000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "21qyUCtnGwCKHKb42jZak8771rAavhcqNaHkDZsvrSb7Vq6zSBEivSL4kDk7VBFs234WvCveUtHaqSxdu98s41K6sAu8hno3n5jzcLwhm9E4SAwCNf8q2KBaGzmXCRgANpoz", - "locked_amt": 0, - "reward": 49013517348, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 150, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4800000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mHGvQ9XdjzuGyixBGrMeeC7EdX9QZNWV64FQWWwTMhFYmdskMbZkQMGiKC3DXqx8ALS4ipC3TJ9NckHPzD7AC1Tfc1GH3TrCxAZ8o93rPux7H5V95Q3hPxdxHiTfxTvgn7f", - "locked_amt": 0, - "reward": 89505343279, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 151, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4800000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "mUJHMDEBiTUVJU5U76Krb5wwMXK6R7CjBrTTGFFAZzgwnasxspJMbcUjedRsY8TbrRfxCuyhmvgb7Kv4chjvHNDsyWA6J8XTSCPH4y5PeqLyLvCCdgUnQ74FDFHNxRNhoAA", - "locked_amt": 0, - "reward": 73800637305, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 152, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4800000000000, - "eligibility": 8640, - "faults": 0, - "hard_faults": 0, - "key": "xwMHJQgF9EGawzuMt5Pvjp1tSWEQmWbeU9T34qTeTeoY8nPijm3qd7G6PrNVWCm53FGsHL5Pc442oLqwwLZZZoqky7Cz2yUYf9jEcMzsGKj45rBmG5CbdhLLmzFm8Tb2Lih", - "locked_amt": 0, - "reward": 73181450856, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 153, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4777000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "nEWqKGKsew4zQMYPCYpdkDXdE4USkvPbH4sZkS6f1LuoLRcfWQ3oxPjaFN1mHc7xdw6DbNwzELF8TzqFyKhnxeG1SkBAzy3qFxKk5EkzathBRhUS6662v8fx8zixV2eXKwR", - "locked_amt": 0, - "reward": 20921406738, - "owner": { - "Account": "nEWqKGKsew4zQMYPCYpdkDXdE4USkvPbH4sZkS6f1LuoLRcfWQ3oxPjaFN1mHc7xdw6DbNwzELF8TzqFyKhnxeG1SkBAzy3qFxKk5EkzathBRhUS6662v8fx8zixV2eXKwR" - }, - "rank": 154, - "ownerType": "Account", - "ownerAddress": "nEWqKGKsew4zQMYPCYpdkDXdE4USkvPbH4sZkS6f1LuoLRcfWQ3oxPjaFN1mHc7xdw6DbNwzELF8TzqFyKhnxeG1SkBAzy3qFxKk5EkzathBRhUS6662v8fx8zixV2eXKwR", - "hasSeparateOwner": false - }, - { - "amount": 4750000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "22cV6z47RkVLMpimfQPeouFwfi8HUHXsG9tRvZq6AwyBETPuqFyxsrgrbEp3UnnaiN6719KjEFfbKijxDfLsCUrEpj4KC2N9CzYBdCA2mZkeKBC8hSBt7zWnVCrWusE581pv", - "locked_amt": 0, - "reward": 46959650586, - "owner": { - "Account": "22cV6z47RkVLMpimfQPeouFwfi8HUHXsG9tRvZq6AwyBETPuqFyxsrgrbEp3UnnaiN6719KjEFfbKijxDfLsCUrEpj4KC2N9CzYBdCA2mZkeKBC8hSBt7zWnVCrWusE581pv" - }, - "rank": 155, - "ownerType": "Account", - "ownerAddress": "22cV6z47RkVLMpimfQPeouFwfi8HUHXsG9tRvZq6AwyBETPuqFyxsrgrbEp3UnnaiN6719KjEFfbKijxDfLsCUrEpj4KC2N9CzYBdCA2mZkeKBC8hSBt7zWnVCrWusE581pv", - "hasSeparateOwner": false - }, - { - "amount": 4700000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "zhXg8xqq1EvUxQVajbGJrdYfTcpwRw4V8cbnQL8aPMB4CCv2HMJ6Xkh7FotjeYMQmvVqfkL3gv1dNjuty9hfrEHQQdYFNAnquV5NBnCGueku9sFbSfif2DURijNfLDrVc4q", - "locked_amt": 0, - "reward": 34657796153, - "owner": { - "Account": "zhXg8xqq1EvUxQVajbGJrdYfTcpwRw4V8cbnQL8aPMB4CCv2HMJ6Xkh7FotjeYMQmvVqfkL3gv1dNjuty9hfrEHQQdYFNAnquV5NBnCGueku9sFbSfif2DURijNfLDrVc4q" - }, - "rank": 156, - "ownerType": "Account", - "ownerAddress": "zhXg8xqq1EvUxQVajbGJrdYfTcpwRw4V8cbnQL8aPMB4CCv2HMJ6Xkh7FotjeYMQmvVqfkL3gv1dNjuty9hfrEHQQdYFNAnquV5NBnCGueku9sFbSfif2DURijNfLDrVc4q", - "hasSeparateOwner": false - }, - { - "amount": 4600000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "sVhNRcqfxqYXh5YBWXbvpx36voghkU7SMr4LY15Ru7UQHtQv6a3VniWr2WD8cuKqF3fveVz6gLnfrfDU7d5vVaP3EQfpH6NnPDhyqAo1GSBP4hnBte9Lg9qYnB34LRUAJzK", - "locked_amt": 0, - "reward": 76392744936, - "owner": { - "Account": "sVhNRcqfxqYXh5YBWXbvpx36voghkU7SMr4LY15Ru7UQHtQv6a3VniWr2WD8cuKqF3fveVz6gLnfrfDU7d5vVaP3EQfpH6NnPDhyqAo1GSBP4hnBte9Lg9qYnB34LRUAJzK" - }, - "rank": 157, - "ownerType": "Account", - "ownerAddress": "sVhNRcqfxqYXh5YBWXbvpx36voghkU7SMr4LY15Ru7UQHtQv6a3VniWr2WD8cuKqF3fveVz6gLnfrfDU7d5vVaP3EQfpH6NnPDhyqAo1GSBP4hnBte9Lg9qYnB34LRUAJzK", - "hasSeparateOwner": false - }, - { - "amount": 4550000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mvsVWvCaiHtugFDx1VmDCX5Zeex1u1768EWuMYBF68czYLbJ8rtaxBbqKvLJJsCD9xEDmLm2STduJsb2j11VEsT7ZUGBzAURd8884zUMDyeWVgrE1CfbGCaYvcdeSzHCUUb", - "locked_amt": 0, - "reward": 75588259150, - "owner": { - "Account": "mvsVWvCaiHtugFDx1VmDCX5Zeex1u1768EWuMYBF68czYLbJ8rtaxBbqKvLJJsCD9xEDmLm2STduJsb2j11VEsT7ZUGBzAURd8884zUMDyeWVgrE1CfbGCaYvcdeSzHCUUb" - }, - "rank": 158, - "ownerType": "Account", - "ownerAddress": "mvsVWvCaiHtugFDx1VmDCX5Zeex1u1768EWuMYBF68czYLbJ8rtaxBbqKvLJJsCD9xEDmLm2STduJsb2j11VEsT7ZUGBzAURd8884zUMDyeWVgrE1CfbGCaYvcdeSzHCUUb", - "hasSeparateOwner": false - }, - { - "amount": 4550000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "ozZES9sJc2KfPDM4ovagzb6PrVkftgGmsM3wsamBKCgPWAtn2zV2Hvx55ToWcxektLCQw89na4U1DxvDUPioFSkJA3CtR2tbMtcU2PuYiKnCNcRrBuXFtmoiLcRzBqSZXJB", - "locked_amt": 0, - "reward": 90404117665, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 159, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "o73g7mTw89CmomkXJMWB4DGVk1fQZRcdty7dyWV8ww6tL3B35ntiN7fQzLvhoiMbuMm6e9WEhFNevwrktUZPesednKyPXdN1V2AcKv9f8SG9awTmRYhDB9XhJqDP7ikcsmv", - "locked_amt": 0, - "reward": 103124193866, - "owner": { - "Account": "o73g7mTw89CmomkXJMWB4DGVk1fQZRcdty7dyWV8ww6tL3B35ntiN7fQzLvhoiMbuMm6e9WEhFNevwrktUZPesednKyPXdN1V2AcKv9f8SG9awTmRYhDB9XhJqDP7ikcsmv" - }, - "rank": 160, - "ownerType": "Account", - "ownerAddress": "o73g7mTw89CmomkXJMWB4DGVk1fQZRcdty7dyWV8ww6tL3B35ntiN7fQzLvhoiMbuMm6e9WEhFNevwrktUZPesednKyPXdN1V2AcKv9f8SG9awTmRYhDB9XhJqDP7ikcsmv", - "hasSeparateOwner": false - }, - { - "amount": 4500000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "r9Vbf2N6mQ1feskB4H5YKDZcN3eak4S6aPPZxhmXtyYd7T6zKVCCeGnvUmJizWJ7C75K4WHM1X9hjCaibDSYEskG12yftf5ezmiJEAP63YrjgSz3piS1mG4qEztyB2UCbNs", - "locked_amt": 0, - "reward": 43593937160, - "owner": { - "Account": "r9Vbf2N6mQ1feskB4H5YKDZcN3eak4S6aPPZxhmXtyYd7T6zKVCCeGnvUmJizWJ7C75K4WHM1X9hjCaibDSYEskG12yftf5ezmiJEAP63YrjgSz3piS1mG4qEztyB2UCbNs" - }, - "rank": 161, - "ownerType": "Account", - "ownerAddress": "r9Vbf2N6mQ1feskB4H5YKDZcN3eak4S6aPPZxhmXtyYd7T6zKVCCeGnvUmJizWJ7C75K4WHM1X9hjCaibDSYEskG12yftf5ezmiJEAP63YrjgSz3piS1mG4qEztyB2UCbNs", - "hasSeparateOwner": false - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "r9yn7nYTELPBLbx15arphaTFezyjCVaBTTAHGSdeRC7piHac9PGkUS9qm7PXZvukLjncPdxAznHSSzb8ngu7iJX5wNdqEK4TnN1P6uxugwFC4JcaH6vzgu4kRrCfySz6nSe", - "locked_amt": 0, - "reward": 116743536281, - "owner": { - "Account": "r9yn7nYTELPBLbx15arphaTFezyjCVaBTTAHGSdeRC7piHac9PGkUS9qm7PXZvukLjncPdxAznHSSzb8ngu7iJX5wNdqEK4TnN1P6uxugwFC4JcaH6vzgu4kRrCfySz6nSe" - }, - "rank": 162, - "ownerType": "Account", - "ownerAddress": "r9yn7nYTELPBLbx15arphaTFezyjCVaBTTAHGSdeRC7piHac9PGkUS9qm7PXZvukLjncPdxAznHSSzb8ngu7iJX5wNdqEK4TnN1P6uxugwFC4JcaH6vzgu4kRrCfySz6nSe", - "hasSeparateOwner": false - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "xuLxjqrDRxcsXMYmuDnRkFnELD6BdMcQUrKjH7hBq7a37LzrG96Da5oCDaLaHfBxz9DzKbQj3RAvK32nHQ7qhRuWFUkRERkNHWwasg81MXNqKrm6dYnE4GvTXbiPL3Gx92B", - "locked_amt": 0, - "reward": 116776106940, - "owner": { - "Account": "xuLxjqrDRxcsXMYmuDnRkFnELD6BdMcQUrKjH7hBq7a37LzrG96Da5oCDaLaHfBxz9DzKbQj3RAvK32nHQ7qhRuWFUkRERkNHWwasg81MXNqKrm6dYnE4GvTXbiPL3Gx92B" - }, - "rank": 163, - "ownerType": "Account", - "ownerAddress": "xuLxjqrDRxcsXMYmuDnRkFnELD6BdMcQUrKjH7hBq7a37LzrG96Da5oCDaLaHfBxz9DzKbQj3RAvK32nHQ7qhRuWFUkRERkNHWwasg81MXNqKrm6dYnE4GvTXbiPL3Gx92B", - "hasSeparateOwner": false - }, - { - "amount": 4500000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "21kpiMmStRRMSwV9C2NQ5J1p3kWiSKyjHFUZHw7Jk4GfPEgdnAJGr3UPwqqncYTQA3xuG3bEWoBoDyDULAe88BVxfbWopLbcuHiSoaUq4hRMAdeKeE5TreePkYrQ8GkTaQW3", - "locked_amt": 0, - "reward": 3413845903, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 164, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4500000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "23yK4TxQev3oLV9nYFS9PzhppZLDZGJh3BqNHA3uEnP1DtmL95oFE2dLWvY8Fj3gHNxmv9zAkjDkRdZEEgjVo4omyYtaNvDs83kv777NSr2DXhJegkbz1dHurp1k7un8ZR5W", - "locked_amt": 0, - "reward": 62054372, - "owner": { - "Account": "23yK4TxQev3oLV9nYFS9PzhppZLDZGJh3BqNHA3uEnP1DtmL95oFE2dLWvY8Fj3gHNxmv9zAkjDkRdZEEgjVo4omyYtaNvDs83kv777NSr2DXhJegkbz1dHurp1k7un8ZR5W" - }, - "rank": 165, - "ownerType": "Account", - "ownerAddress": "23yK4TxQev3oLV9nYFS9PzhppZLDZGJh3BqNHA3uEnP1DtmL95oFE2dLWvY8Fj3gHNxmv9zAkjDkRdZEEgjVo4omyYtaNvDs83kv777NSr2DXhJegkbz1dHurp1k7un8ZR5W", - "hasSeparateOwner": false - }, - { - "amount": 4500000000000, - "eligibility": 25920, - "faults": 0, - "hard_faults": 0, - "key": "26q6wyM9QDhY9k5eZkCRRDaSkHXPzQKYxvPVSEcTYW2sPdzzxdAqP7R7uVxtyNeqQKVypj8kbaQGXYWqYcBg6kAtDTKm84Dxgbj4ZwjqgoWjXb5MS3R6vcXvwBNd51neQn7a", - "locked_amt": 0, - "reward": 30968992591, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 166, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "nKfphGtCdB6YDbRu1dVSDHqqKa7LwJpcYg9NhXxHpdpPaQqePqYzQXkVKJFXCqp8QD37Sv9s9gR8gkJtrAB14CnfTr386JpP4BtwqUbUnyNt73EJhzssH7GxrfL9N8Nn9Cv", - "locked_amt": 0, - "reward": 59295171436, - "owner": { - "Account": "nKfphGtCdB6YDbRu1dVSDHqqKa7LwJpcYg9NhXxHpdpPaQqePqYzQXkVKJFXCqp8QD37Sv9s9gR8gkJtrAB14CnfTr386JpP4BtwqUbUnyNt73EJhzssH7GxrfL9N8Nn9Cv" - }, - "rank": 167, - "ownerType": "Account", - "ownerAddress": "nKfphGtCdB6YDbRu1dVSDHqqKa7LwJpcYg9NhXxHpdpPaQqePqYzQXkVKJFXCqp8QD37Sv9s9gR8gkJtrAB14CnfTr386JpP4BtwqUbUnyNt73EJhzssH7GxrfL9N8Nn9Cv", - "hasSeparateOwner": false - }, - { - "amount": 4000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "p4tLgEbhB1YGpV75jStoKCeCaD41yvYopK11rZW9XxX6BepfcAtucZYFW9kjCfGXySTYsAkumEhdeLMbDfHjyF42FEhPWeQ7vGKVrcg2cZmGHdnC65L5v5fP5we9c6Cx9W2", - "locked_amt": 0, - "reward": 15251767219, - "owner": { - "Account": "p4tLgEbhB1YGpV75jStoKCeCaD41yvYopK11rZW9XxX6BepfcAtucZYFW9kjCfGXySTYsAkumEhdeLMbDfHjyF42FEhPWeQ7vGKVrcg2cZmGHdnC65L5v5fP5we9c6Cx9W2" - }, - "rank": 168, - "ownerType": "Account", - "ownerAddress": "p4tLgEbhB1YGpV75jStoKCeCaD41yvYopK11rZW9XxX6BepfcAtucZYFW9kjCfGXySTYsAkumEhdeLMbDfHjyF42FEhPWeQ7vGKVrcg2cZmGHdnC65L5v5fP5we9c6Cx9W2", - "hasSeparateOwner": false - }, - { - "amount": 4000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "rC7VrR2X35N4nq8c9o5xsT8buA3xwPu5WUavfDmQEyW59KbANGuHYA6LLwiWmDpfWhxuzmdV5PfpW6GGhrE78eBNjA2wP27pZWASEsbJfEVboF5ZUuvVKCiESwfVXypG279", - "locked_amt": 0, - "reward": 31014366707, - "owner": { - "Account": "rC7VrR2X35N4nq8c9o5xsT8buA3xwPu5WUavfDmQEyW59KbANGuHYA6LLwiWmDpfWhxuzmdV5PfpW6GGhrE78eBNjA2wP27pZWASEsbJfEVboF5ZUuvVKCiESwfVXypG279" - }, - "rank": 169, - "ownerType": "Account", - "ownerAddress": "rC7VrR2X35N4nq8c9o5xsT8buA3xwPu5WUavfDmQEyW59KbANGuHYA6LLwiWmDpfWhxuzmdV5PfpW6GGhrE78eBNjA2wP27pZWASEsbJfEVboF5ZUuvVKCiESwfVXypG279", - "hasSeparateOwner": false - }, - { - "amount": 4000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "uk9f7YWz1316Sd9j6TG3o7D5uLczKKGnU7B4KdKBhqRxeHVb5aVCYsLX9VT8ENN3WL673FbJccYEGHtgkZztpuezbETuXFyq9ATR7obC6C2aYBL3GMSzSTS46GJjEp8axQj", - "locked_amt": 0, - "reward": 17949227919, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 170, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "226JM6nXE6JjybjeJrKKjnqUe1J7RGxXoqJmnxztqfftcfwYNjVTQwCE7zFFFtxg7pcoK77yxwZFFi5aSyM1tq2Y2HiD1Hu1dHUBvzwG4XVtZB9bjEKm8ySP3rsfoxTqMacu", - "locked_amt": 0, - "reward": 1256601033, - "owner": { - "Account": "226JM6nXE6JjybjeJrKKjnqUe1J7RGxXoqJmnxztqfftcfwYNjVTQwCE7zFFFtxg7pcoK77yxwZFFi5aSyM1tq2Y2HiD1Hu1dHUBvzwG4XVtZB9bjEKm8ySP3rsfoxTqMacu" - }, - "rank": 171, - "ownerType": "Account", - "ownerAddress": "226JM6nXE6JjybjeJrKKjnqUe1J7RGxXoqJmnxztqfftcfwYNjVTQwCE7zFFFtxg7pcoK77yxwZFFi5aSyM1tq2Y2HiD1Hu1dHUBvzwG4XVtZB9bjEKm8ySP3rsfoxTqMacu", - "hasSeparateOwner": false - }, - { - "amount": 4000000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "22Y2adibhscn7noPkrv4cpiNYmV3Ft2d9WQrRygrttZhnFic4omqm9x1ViGQmm1voC71q99PqyG1SVrv8TFVgV84qx5babCVYdwSrESwFXL3NSeYs8ToiYZEYcQhZNmW8zM1", - "locked_amt": 0, - "reward": 29026385350, - "owner": { - "Account": "22Y2adibhscn7noPkrv4cpiNYmV3Ft2d9WQrRygrttZhnFic4omqm9x1ViGQmm1voC71q99PqyG1SVrv8TFVgV84qx5babCVYdwSrESwFXL3NSeYs8ToiYZEYcQhZNmW8zM1" - }, - "rank": 172, - "ownerType": "Account", - "ownerAddress": "22Y2adibhscn7noPkrv4cpiNYmV3Ft2d9WQrRygrttZhnFic4omqm9x1ViGQmm1voC71q99PqyG1SVrv8TFVgV84qx5babCVYdwSrESwFXL3NSeYs8ToiYZEYcQhZNmW8zM1", - "hasSeparateOwner": false - }, - { - "amount": 4000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "23F5qFXPz725XUY1mMy6KtJmgUJPDEpgW3PntEUTvKJUcoBnFy8EC1L8r1RgiGUVRsLbYPcoQNVBzQjuNqyzCPmZ3PGu7PnjYvDijqweTJg4b6qHqNvGMvmWedJQcdLuLhRL", - "locked_amt": 0, - "reward": 87840299414, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 173, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 4000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "254ZiKWavWqYmoo2jw2QpGXtkUZs9nYY2dVbSkKeHpGiWPxNJfwVyp6erZLcuuad4fRTzyqvyRT71fLQ3UdSHfWUPVckWP9GaJX2pee7F4mgq3UGThncSx8sNvjW47gHPWd5", - "locked_amt": 0, - "reward": 1225593829, - "owner": { - "Account": "254ZiKWavWqYmoo2jw2QpGXtkUZs9nYY2dVbSkKeHpGiWPxNJfwVyp6erZLcuuad4fRTzyqvyRT71fLQ3UdSHfWUPVckWP9GaJX2pee7F4mgq3UGThncSx8sNvjW47gHPWd5" - }, - "rank": 174, - "ownerType": "Account", - "ownerAddress": "254ZiKWavWqYmoo2jw2QpGXtkUZs9nYY2dVbSkKeHpGiWPxNJfwVyp6erZLcuuad4fRTzyqvyRT71fLQ3UdSHfWUPVckWP9GaJX2pee7F4mgq3UGThncSx8sNvjW47gHPWd5", - "hasSeparateOwner": false - }, - { - "amount": 3988000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "ppMLM6t6GLmZb7xzx617TTHQPdHHRNSfB8PjtGe8YNbWAo4BRYfnNYZxCj62pLY8gXZqsrx7TaBS17dRsHoE81wLHgMHaYoq2z6GHX7KAD5TiRcX1w5ctiSqV3idx3SJdAe", - "locked_amt": 0, - "reward": 32534699326, - "owner": { - "Account": "ppMLM6t6GLmZb7xzx617TTHQPdHHRNSfB8PjtGe8YNbWAo4BRYfnNYZxCj62pLY8gXZqsrx7TaBS17dRsHoE81wLHgMHaYoq2z6GHX7KAD5TiRcX1w5ctiSqV3idx3SJdAe" - }, - "rank": 175, - "ownerType": "Account", - "ownerAddress": "ppMLM6t6GLmZb7xzx617TTHQPdHHRNSfB8PjtGe8YNbWAo4BRYfnNYZxCj62pLY8gXZqsrx7TaBS17dRsHoE81wLHgMHaYoq2z6GHX7KAD5TiRcX1w5ctiSqV3idx3SJdAe", - "hasSeparateOwner": false - }, - { - "amount": 3528000000000, - "eligibility": 56160, - "faults": 3, - "hard_faults": 0, - "key": "25iyRWkrjAy6XKcroW4JQNxkoitsN8HsgDbCyP1gUYXrfLVJaTDKjeTsVEWniw3o316ADgEecWpcSkMBrFaztbvDMRJu3HwNyTpP3E8v4ecAQF3sXGVFvFVZsbxUibGqJFvF", - "locked_amt": 1372000000000, - "reward": 0, - "owner": { - "Account": "25iyRWkrjAy6XKcroW4JQNxkoitsN8HsgDbCyP1gUYXrfLVJaTDKjeTsVEWniw3o316ADgEecWpcSkMBrFaztbvDMRJu3HwNyTpP3E8v4ecAQF3sXGVFvFVZsbxUibGqJFvF" - }, - "rank": 176, - "ownerType": "Account", - "ownerAddress": "25iyRWkrjAy6XKcroW4JQNxkoitsN8HsgDbCyP1gUYXrfLVJaTDKjeTsVEWniw3o316ADgEecWpcSkMBrFaztbvDMRJu3HwNyTpP3E8v4ecAQF3sXGVFvFVZsbxUibGqJFvF", - "hasSeparateOwner": false - }, - { - "amount": 3000000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "tz9ChDUKqoPTfrpfTdPLEBHCQHf4j68bJRUomGVrPGRTdC7i5fQJJRQjqAY1EYE9JpvYW1vPRPQb7RqgighKQGXB64cjD5CCV3gwcc4U5Mj8T4sPwV2yRRsVqSTruwTX9kJ", - "locked_amt": 0, - "reward": 682598092, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 177, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 3000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "yY5K4A2gvP6J1mMZJ8fjB67pFQS9Jmr2gcrvckB7A6fCW3P5NzciwHvFXg2UqCfApGUkA9L3BvrjGGHk8spVdLQv1AuqjGfiSL21uJF4k6pNJZuV8b3vuoupKPRQWHEsyKf", - "locked_amt": 0, - "reward": 59342189044, - "owner": { - "Account": "yY5K4A2gvP6J1mMZJ8fjB67pFQS9Jmr2gcrvckB7A6fCW3P5NzciwHvFXg2UqCfApGUkA9L3BvrjGGHk8spVdLQv1AuqjGfiSL21uJF4k6pNJZuV8b3vuoupKPRQWHEsyKf" - }, - "rank": 178, - "ownerType": "Account", - "ownerAddress": "yY5K4A2gvP6J1mMZJ8fjB67pFQS9Jmr2gcrvckB7A6fCW3P5NzciwHvFXg2UqCfApGUkA9L3BvrjGGHk8spVdLQv1AuqjGfiSL21uJF4k6pNJZuV8b3vuoupKPRQWHEsyKf", - "hasSeparateOwner": false - }, - { - "amount": 2500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "yWynRKzN1BdKJQDtv848LdSRJrFqdrudoDTnre2fiWAC8XvZuTb4UAjAkStu9idW4N9R8ncnuk4dsMFPE63AgF3Jbdemax5pH2YMkngxkjEBBaRpEV1wHHZh2ecS3vKeGiN", - "locked_amt": 0, - "reward": 17095981698, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 179, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2494800000000, - "eligibility": 51840, - "faults": 4, - "hard_faults": 0, - "key": "22sM1aodiz758CdgA6FyDAa9zqKPrVUSdgZgwKZvGEYj9RGCZAubZEp4mMQKyWV8vwS11wWso6RU4wiMsgL6LuUnKM5zyNMW3nEoSBpBPucoaKyDw2W7W5rrCYW1i7xj1s1R", - "locked_amt": 2455200000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 180, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "qpJaJG4yqMuvoasorwb3YKXGQnBLqsdRHWjVnj3cz4MQCS4Tp8hbxDwdz2gx8N7uzy42k6uEGExzkn7tcvnJufaC42agLULKffRMyybrWfXBX1KUcPGQXHAQ4UabkrACPK4", - "locked_amt": 0, - "reward": 15050402114, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 181, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "rqEDwXotmnA4fu2aJqcRQkuUsew238zsTyA2ydm8P8ZmmXaFXYFNvp2FG4N3VXMUPSerpCXfZEFxkdzbiGESZwv9Reo3eTRsv1ELZGFXEjiEwqAVeXwaGGDUh1g27G7u3tY", - "locked_amt": 0, - "reward": 77567965, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 182, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2000000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "tDZQKdp9m1Xp9VZkPyg5scFDArZBAJxTsa4rYheD1jx9Y1GrpwtMFeySZKy88xZxiMFs53x8zZqSTmNKbPjGdPwzy3b8KSp5yTmLjBhBZmKPnLvMjv4mSDWCjL9Sq3ULmFy", - "locked_amt": 0, - "reward": 14536237313, - "owner": { - "Account": "tDZQKdp9m1Xp9VZkPyg5scFDArZBAJxTsa4rYheD1jx9Y1GrpwtMFeySZKy88xZxiMFs53x8zZqSTmNKbPjGdPwzy3b8KSp5yTmLjBhBZmKPnLvMjv4mSDWCjL9Sq3ULmFy" - }, - "rank": 183, - "ownerType": "Account", - "ownerAddress": "tDZQKdp9m1Xp9VZkPyg5scFDArZBAJxTsa4rYheD1jx9Y1GrpwtMFeySZKy88xZxiMFs53x8zZqSTmNKbPjGdPwzy3b8KSp5yTmLjBhBZmKPnLvMjv4mSDWCjL9Sq3ULmFy", - "hasSeparateOwner": false - }, - { - "amount": 2000000000000, - "eligibility": 56160, - "faults": 0, - "hard_faults": 0, - "key": "uKPG5siNPyqg2t6pi81Q6vJXTZ37e51rMoo8ShXVUxSSPqL5TvbBKj6yw7bWo286DCnULsWfwFFkc7FGraPGuxWT5CycwLBfDTPUYRhHJ96A2ZSZWuqdDbKjCVvndikgW9A", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 184, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "xR2Au27wxGRkM9ZpbbkPnUP4uSo4jWFCVig5d3CP7DR9fZ7oJko7JaDraeTx7RLEpauvZBdxfttcUz3VkAjnxGLXr6xNzrJPuqJt29BkgQH2KTkLukfzzPy4uRFveGVBK3t", - "locked_amt": 0, - "reward": 16103964526, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 185, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 2000000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "ydXphWoWDVpfWv5mkEr4m51kk24ChV8FUrwGhSfmcHJYHPnGgLrWTk8XaJTMWHunoToasBLR2UYBLGPPX7D3dy6KVXPV3fAWU8Gr7YsEimivPKhCoAQC8psRYhGtZMXUPRt", - "locked_amt": 0, - "reward": 310271860, - "owner": { - "Account": "ydXphWoWDVpfWv5mkEr4m51kk24ChV8FUrwGhSfmcHJYHPnGgLrWTk8XaJTMWHunoToasBLR2UYBLGPPX7D3dy6KVXPV3fAWU8Gr7YsEimivPKhCoAQC8psRYhGtZMXUPRt" - }, - "rank": 186, - "ownerType": "Account", - "ownerAddress": "ydXphWoWDVpfWv5mkEr4m51kk24ChV8FUrwGhSfmcHJYHPnGgLrWTk8XaJTMWHunoToasBLR2UYBLGPPX7D3dy6KVXPV3fAWU8Gr7YsEimivPKhCoAQC8psRYhGtZMXUPRt", - "hasSeparateOwner": false - }, - { - "amount": 2000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "zzxfn4pQEjVwMGhdPszeyHtWZf1wbxmGR75JGeBK6cXe8sYGnwXVdn8Vvi4p6ZLSWJwTrrWbpKBoMWWZk4XAro8gwyMnfSxeziTkX9YqWYUytokgBxVPHHBiPsqUTWP2xNL", - "locked_amt": 0, - "reward": 17392236037, - "owner": { - "Account": "zzxfn4pQEjVwMGhdPszeyHtWZf1wbxmGR75JGeBK6cXe8sYGnwXVdn8Vvi4p6ZLSWJwTrrWbpKBoMWWZk4XAro8gwyMnfSxeziTkX9YqWYUytokgBxVPHHBiPsqUTWP2xNL" - }, - "rank": 187, - "ownerType": "Account", - "ownerAddress": "zzxfn4pQEjVwMGhdPszeyHtWZf1wbxmGR75JGeBK6cXe8sYGnwXVdn8Vvi4p6ZLSWJwTrrWbpKBoMWWZk4XAro8gwyMnfSxeziTkX9YqWYUytokgBxVPHHBiPsqUTWP2xNL", - "hasSeparateOwner": false - }, - { - "amount": 1500000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "rp6vhhSNpCdJ7aseZjij5y7AdA4ikNVs4eqqSsXohTRUzKvb2gj9PwZVifmD8gHf11oTpNRoeRLrP3PCyvQmkBbHwLbLPBpmcXaVmukputWsT2HYVKP4By4TGtMEx1StCv5", - "locked_amt": 0, - "reward": 294778248, - "owner": { - "Account": "rp6vhhSNpCdJ7aseZjij5y7AdA4ikNVs4eqqSsXohTRUzKvb2gj9PwZVifmD8gHf11oTpNRoeRLrP3PCyvQmkBbHwLbLPBpmcXaVmukputWsT2HYVKP4By4TGtMEx1StCv5" - }, - "rank": 188, - "ownerType": "Account", - "ownerAddress": "rp6vhhSNpCdJ7aseZjij5y7AdA4ikNVs4eqqSsXohTRUzKvb2gj9PwZVifmD8gHf11oTpNRoeRLrP3PCyvQmkBbHwLbLPBpmcXaVmukputWsT2HYVKP4By4TGtMEx1StCv5", - "hasSeparateOwner": false - }, - { - "amount": 1500000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "uVvGzvmdDZWC9pcLvGEvazVWdJFQsLphEPBA61j5pVWrnwGztzENkYWhjaTtqAkykBS3khzYhGXFwfC3fMe2H5whVAq4jbe2FZQCePks193bfd1xe2uYfehZiNxw4zKvMNZ", - "locked_amt": 0, - "reward": 465407790, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 189, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1234000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mLx5HUo5PhsobwgMJhzL9j8TY7TjC13EsxHL7cKLTmMJ9BqvnG2RttD2uMg1FEDprnSvmN7BwCkpr6wW9XSco2ASrUjou2neUXj4uq16NreXVk4jmfr3CEHqvBrRgEzoka8", - "locked_amt": 0, - "reward": 29633646022, - "owner": { - "Account": "mLx5HUo5PhsobwgMJhzL9j8TY7TjC13EsxHL7cKLTmMJ9BqvnG2RttD2uMg1FEDprnSvmN7BwCkpr6wW9XSco2ASrUjou2neUXj4uq16NreXVk4jmfr3CEHqvBrRgEzoka8" - }, - "rank": 190, - "ownerType": "Account", - "ownerAddress": "mLx5HUo5PhsobwgMJhzL9j8TY7TjC13EsxHL7cKLTmMJ9BqvnG2RttD2uMg1FEDprnSvmN7BwCkpr6wW9XSco2ASrUjou2neUXj4uq16NreXVk4jmfr3CEHqvBrRgEzoka8", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 8640, - "faults": 0, - "hard_faults": 0, - "key": "mWvq9EWD9b8gQw5uD4GnYaV8Wsn86youaZ1ghCjwTkTyghBnrMz1tGdwKRnjd3svKQE1fMxfdu6M64pEN9NCUhcbwrER4s3HKpYGEp4m7pfsBMoDjbYzTTUxooU7BY2oEDe", - "locked_amt": 0, - "reward": 1613840782, - "owner": { - "Account": "mWvq9EWD9b8gQw5uD4GnYaV8Wsn86youaZ1ghCjwTkTyghBnrMz1tGdwKRnjd3svKQE1fMxfdu6M64pEN9NCUhcbwrER4s3HKpYGEp4m7pfsBMoDjbYzTTUxooU7BY2oEDe" - }, - "rank": 191, - "ownerType": "Account", - "ownerAddress": "mWvq9EWD9b8gQw5uD4GnYaV8Wsn86youaZ1ghCjwTkTyghBnrMz1tGdwKRnjd3svKQE1fMxfdu6M64pEN9NCUhcbwrER4s3HKpYGEp4m7pfsBMoDjbYzTTUxooU7BY2oEDe", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "oZPYzFzebw3jLfvVY66FhMDmjdMyRCDpXFLsMHXShigAD9LGH7vA8uixxyd3Km7ck3RHMXPi7S1B9Sej5934hxCajhu8ivbhBVwBM2FEA5UmKfRJSngqWA8fDBWqdennNj2", - "locked_amt": 0, - "reward": 620543720, - "owner": { - "Account": "oZPYzFzebw3jLfvVY66FhMDmjdMyRCDpXFLsMHXShigAD9LGH7vA8uixxyd3Km7ck3RHMXPi7S1B9Sej5934hxCajhu8ivbhBVwBM2FEA5UmKfRJSngqWA8fDBWqdennNj2" - }, - "rank": 192, - "ownerType": "Account", - "ownerAddress": "oZPYzFzebw3jLfvVY66FhMDmjdMyRCDpXFLsMHXShigAD9LGH7vA8uixxyd3Km7ck3RHMXPi7S1B9Sej5934hxCajhu8ivbhBVwBM2FEA5UmKfRJSngqWA8fDBWqdennNj2", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "ofpeGL63Gwsmri7qn7p85s9a9WMeepjypWvznBV4Z3CrV5fXKVujjPbAw2rSLp9upfF3bNEMspnfKYoBv3SoQt1X618TZtpoEbN4JhAsYfvaq8D5rs3ch2HESWUVk5bhNSH", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 193, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "p83QocPcuqMoEYuRpaLiGciwKGzUMx9VXF9WRKJu4Qb5d3hEvY6VTPB5RTJMRF3imMPAUo2KoAtve3Z42EFo2nA6ZoCvtynG5q6ASJCmxw8Sh8Yn8ArQDpJp9Zw1AXquwaN", - "locked_amt": 0, - "reward": 356812639, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 194, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "pM2PKWckAPFM22QTDRdTz8PQXMhLpxrEFog9LHBVsX3wJLog7eebNc9ASyvnF8Y3UV3GrT3GqWNMU6BsJejvroaxm7drNGmx1ZqZ4ViJnUqUDr4DZXwc92u2oxjG1DYuvRD", - "locked_amt": 0, - "reward": 14614232388, - "owner": { - "Account": "pM2PKWckAPFM22QTDRdTz8PQXMhLpxrEFog9LHBVsX3wJLog7eebNc9ASyvnF8Y3UV3GrT3GqWNMU6BsJejvroaxm7drNGmx1ZqZ4ViJnUqUDr4DZXwc92u2oxjG1DYuvRD" - }, - "rank": 195, - "ownerType": "Account", - "ownerAddress": "pM2PKWckAPFM22QTDRdTz8PQXMhLpxrEFog9LHBVsX3wJLog7eebNc9ASyvnF8Y3UV3GrT3GqWNMU6BsJejvroaxm7drNGmx1ZqZ4ViJnUqUDr4DZXwc92u2oxjG1DYuvRD", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "q82TZ6oPSPK8F77ze6DGzwYQeAbc8mH5FXbBbcah7nH39qLCm25yvpnHz2mLvPUtsRYSngortGac683sQtMYYARotWuUBYg66igFeR2fECu1zW7a83dMCxE3EdZYuYrhMoq", - "locked_amt": 0, - "reward": 15188235399, - "owner": { - "Account": "q82TZ6oPSPK8F77ze6DGzwYQeAbc8mH5FXbBbcah7nH39qLCm25yvpnHz2mLvPUtsRYSngortGac683sQtMYYARotWuUBYg66igFeR2fECu1zW7a83dMCxE3EdZYuYrhMoq" - }, - "rank": 196, - "ownerType": "Account", - "ownerAddress": "q82TZ6oPSPK8F77ze6DGzwYQeAbc8mH5FXbBbcah7nH39qLCm25yvpnHz2mLvPUtsRYSngortGac683sQtMYYARotWuUBYg66igFeR2fECu1zW7a83dMCxE3EdZYuYrhMoq", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "t7e39EETKLqNmaUWmKyKc9S7wi2hLjyzfzikWcpKmSukCvVgj4rzL92x5gBgNFQKASgm53p9RkKxm62X9WeoEPBgpPeNf8qt9MUaLbos64NfXSmFZdDK8Da56SBfpnVsBvj", - "locked_amt": 0, - "reward": 636057313, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 197, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "tF7NxrSfBHmvYfSMz2K1pfXDsA8dqrtDubXhUz3QvJLKj3vZJXWjGr5RFpoyvUzyMpnrq6yYF1KrytLv5HNt9K15hciSJdReotEi57veXCjR1wLnnUZKp2X7urheBbzvtGp", - "locked_amt": 0, - "reward": 248217488, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 198, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "xRytSKgw9zDQBXzHD3UpQWXxjQdfak8epebGPy2FJLrk2mGQDnM29mbxPDcVbniU3YLyPmGgkw12KW6uMBq4sbUfCYaBr9UKGZhTqyPhA2bYCDHJMcXuTX6jDKX1TFRBCwX", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 199, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "xxkdeoBGrqfS9ALm84AhtnBwmcPkyL9JXvBGu1dvoXGvASFSfUx7AuJk3epPwWDdWXNKxcE8HALXZQBNz19Vf1kH4onpw9tsH6bWGDvZhDCytVuET5cFbjbBeBd2CPpPwwD", - "locked_amt": 0, - "reward": 15420512260, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 200, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "yc8aiwLXGpXjHFgP6kgEHpTq6vewtqGHCNKdkvRndqeGsMrkxeEEX26FMY3sHFrMMxDyUSRFWbeWBaWkuMkErotcC4qhvDReKGddJ5g32G6parJsu43PBCnsvtumypnayqy", - "locked_amt": 0, - "reward": 638323011, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 201, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "zfnJJ5szM4EPk4KjE1LcHsHQhPBjivarV7skKMszgyyVCnXRhvq9s9amTbiLyB6TyZ9i4abdk9hhBAvcEpPDfY83fiBDZY5uc2mf8xo4EMf5reXfpk9eW3a45XQQWPgTQcf", - "locked_amt": 0, - "reward": 1210060254, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 202, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "21QJxGctSJrgaF7qrnKQXbqDsNanHJZT7TjxA9SjSdPRijRf7MJ8Rze3oxSKzKYdDquDDgLmgDu2EPtYVmYkEbb9gKo8YdtP9uN2ZzeACVNQbEvBLz3RUCyo2zEhNsqnB5Y8", - "locked_amt": 0, - "reward": 14831422906, - "owner": { - "Account": "21QJxGctSJrgaF7qrnKQXbqDsNanHJZT7TjxA9SjSdPRijRf7MJ8Rze3oxSKzKYdDquDDgLmgDu2EPtYVmYkEbb9gKo8YdtP9uN2ZzeACVNQbEvBLz3RUCyo2zEhNsqnB5Y8" - }, - "rank": 203, - "ownerType": "Account", - "ownerAddress": "21QJxGctSJrgaF7qrnKQXbqDsNanHJZT7TjxA9SjSdPRijRf7MJ8Rze3oxSKzKYdDquDDgLmgDu2EPtYVmYkEbb9gKo8YdtP9uN2ZzeACVNQbEvBLz3RUCyo2zEhNsqnB5Y8", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "21q1TvrCkhN69R9hujX2gt4xxiDetZjmjj2r519Vvp7smiSRukNnnxosrS6sWrzgMPGrNWAciQT3faDrDGkqNJdyEfjYi5C1dniBo3F6pzzQy6nVPsbL7Fqe2BYSWVHZjNyZ", - "locked_amt": 0, - "reward": 372326232, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 204, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "22kT7LispVSAf7QVMukLaTTQC7yMdVja2FUvGaSqGgqfeFmHwk5CEzYYza82VR4pi5wLPQcQCkZzhpLT4ZftrjdxM5e3X7F7P1T4xTpS1WjSYL4jmeXe4ShMNgTxaC7zzYqx", - "locked_amt": 0, - "reward": 1707022241, - "owner": { - "Account": "22kT7LispVSAf7QVMukLaTTQC7yMdVja2FUvGaSqGgqfeFmHwk5CEzYYza82VR4pi5wLPQcQCkZzhpLT4ZftrjdxM5e3X7F7P1T4xTpS1WjSYL4jmeXe4ShMNgTxaC7zzYqx" - }, - "rank": 205, - "ownerType": "Account", - "ownerAddress": "22kT7LispVSAf7QVMukLaTTQC7yMdVja2FUvGaSqGgqfeFmHwk5CEzYYza82VR4pi5wLPQcQCkZzhpLT4ZftrjdxM5e3X7F7P1T4xTpS1WjSYL4jmeXe4ShMNgTxaC7zzYqx", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "23LC6tza4TTm954oAXKHUdK7Z8RwVj6JtUTz6wc8Kni1s5f4tfPrFY5bD1XNuASKDf7NRHnUfbmycYHXVx1moTN6fr5zimBgnGAvRCAXTsyQFnDUG42LUu5oT8oCiKdrpnuS", - "locked_amt": 0, - "reward": 995135577, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 206, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "23Xa3P7xtJxW3zYRjfiM1yRSQYN1Vt6aZ1V2gH7vnJkxBjEMvLz8dCkwvqQdraL7NGf9Asc1AAujEMabUz81wa3NizVDXy4ZqEWVb36URnYzTMjqPCVBbLcWZujGzAvwJiN2", - "locked_amt": 0, - "reward": 46540779, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 207, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "23izEEyhMKzmgR7J19vNtH8BDwafGib8XKEsc9NMmBLzLAhuMkqA3tx8ZYDLL2bY7jWNySkUHSg8YBQT1ZpYzEswY3YrtTTw12CzRPYyTUWjwKx8zhffUDPYCuPJpNXiAjUi", - "locked_amt": 0, - "reward": 325785453, - "owner": { - "Account": "23izEEyhMKzmgR7J19vNtH8BDwafGib8XKEsc9NMmBLzLAhuMkqA3tx8ZYDLL2bY7jWNySkUHSg8YBQT1ZpYzEswY3YrtTTw12CzRPYyTUWjwKx8zhffUDPYCuPJpNXiAjUi" - }, - "rank": 208, - "ownerType": "Account", - "ownerAddress": "23izEEyhMKzmgR7J19vNtH8BDwafGib8XKEsc9NMmBLzLAhuMkqA3tx8ZYDLL2bY7jWNySkUHSg8YBQT1ZpYzEswY3YrtTTw12CzRPYyTUWjwKx8zhffUDPYCuPJpNXiAjUi", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "23soQKcC5qPi4eEhRsY8saEknqQGm24yXmyZDgrv7dF2LvXpLMhsm39Cfg3zahNwmgf1bpUHkHBAjMsbD3P7UNPvuGVUYvBLX4yvmJT7BtagrKJ8JQhVw78azNsfw4GCy5Fa", - "locked_amt": 0, - "reward": 667511609, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 209, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "244h5qgZaU8S6GttT5zL1K56xecr4YrddWLd5HzByB15uhcJS5V6J1m5H5ewTTHJj3ywTMUrbFV8Ku1QpMEVPziLu3fK67Ry7xrcBcpsmG7CnYH2ww1JoVA92Ar22hPjVFZ3", - "locked_amt": 0, - "reward": 1057189949, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 210, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 23760, - "faults": 1, - "hard_faults": 0, - "key": "24bFF8fUoMPZ5JVfdFrcQUea81um2yieXb2v8Q3mWgpHCNRiStP11tYdpgHmQAi7yu6pru8ywsAhEbxRTGnLhw6VYnT3iQKtSi6xPka5XPRRAfFmwP99GxgA1b9c5yWYVQB7", - "locked_amt": 0, - "reward": 0, - "owner": { - "Account": "24bFF8fUoMPZ5JVfdFrcQUea81um2yieXb2v8Q3mWgpHCNRiStP11tYdpgHmQAi7yu6pru8ywsAhEbxRTGnLhw6VYnT3iQKtSi6xPka5XPRRAfFmwP99GxgA1b9c5yWYVQB7" - }, - "rank": 211, - "ownerType": "Account", - "ownerAddress": "24bFF8fUoMPZ5JVfdFrcQUea81um2yieXb2v8Q3mWgpHCNRiStP11tYdpgHmQAi7yu6pru8ywsAhEbxRTGnLhw6VYnT3iQKtSi6xPka5XPRRAfFmwP99GxgA1b9c5yWYVQB7", - "hasSeparateOwner": false - }, - { - "amount": 1000000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "26ZZshg4skq2rrJQMw4WuXe9igNvUFeZtxBQw9qii3wZu4GKRjMoAxKGRefBoR1vy4Cs6vPihSw9iPBzVy4EBu8m2CaMemPSD3gwr8VFzTkqMoBEjs5Tr5et1rirWmgevM76", - "locked_amt": 0, - "reward": 28762941510, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 212, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 1, - "hard_faults": 0, - "key": "26p1CyNua6GzUW5gaLZY1suFiThGbZEEuLKJMXH1NsuQbd3tFwq2wLAMd7vMP5fhD3M83yA1GtzqqmqiwoHpJ5YXamCfjYfj6Jkq6fhGc2xtFFXmVfWC3tVoz3qd3yqSbUgu", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 213, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - }, - { - "amount": 900000000000, - "eligibility": 25920, - "faults": 2, - "hard_faults": 0, - "key": "r5cYVShkE4def9ZwSidnL6KDUP7JaDL65jpefjrMm7gqx1j1Gk5Zww49z4Dna8qDA4GSQSySmMkDZTSFNv6dhtEY7N8JTDCp3Tuu7gSfS67Gc1BKS8XVh3LqjwkDWEBmUxc", - "locked_amt": 100000000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - }, - "rank": 214, - "ownerType": "Contract", - "ownerAddress": "0200000000000000000000000000000000000000000000000000000000000000", - "hasSeparateOwner": true - } -] diff --git a/explorer/src/lib/mock-data/gql-block-details.json b/explorer/src/lib/mock-data/gql-block-details.json deleted file mode 100644 index 5e301e15ac..0000000000 --- a/explorer/src/lib/mock-data/gql-block-details.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "block": { - "header": { - "json": "{\"version\":1,\"height\":4705,\"timestamp\":1726077151,\"prev_block_hash\":\"d63e9b3ccd3e5217b108f0a1f5aacef9bc247adb61bfbce4b26138c88c7cfe3b\",\"seed\":\"813da52d506e815c1a793e6c9ff14520a11bf56a53b4a605edae665837a63a261586ac24f89dc1f125920dafdbefb96d\",\"state_hash\":\"981ca3595588822377bdfc4fbe6b02501b66d48bfbfa353069148cd758ecb137\",\"event_hash\":\"65c5d014c8b2f68463f8697d9254c0ea159bab10d2012b9f18b2bf803a4ff11c\",\"generator_bls_pubkey\":\"2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY\",\"txroot\":\"ffa26c053fb27e627db71e8629abcf85bd9d929ef185a6456f95f4a7a8ee44d1\",\"faultroot\":\"0000000000000000000000000000000000000000000000000000000000000000\",\"gas_limit\":5000000000,\"iteration\":0,\"prev_block_cert\":{\"result\":{\"Valid\":\"d63e9b3ccd3e5217b108f0a1f5aacef9bc247adb61bfbce4b26138c88c7cfe3b\"},\"validation\":{\"bitset\":1826677,\"aggregate_signature\":\"968dd2af69beb59b21b4cd8ee228e957f46226eff808a3f9843e22a8301c0290026ff9046afed5ce49f78cdb224b74f3\"},\"ratification\":{\"bitset\":52854269,\"aggregate_signature\":\"acc24d1996f30062015e2727098ed63764b230f9957bca7e9d18d78c70942d8eda23d6f58046d6d97b0d13e8e029d57b\"}},\"failed_iterations\":[],\"hash\":\"716abb947d32ac58ee4483dc0428ac75f4d3685f7fe418ec236cf46daf323315\"}" - } - } -} diff --git a/explorer/src/lib/mock-data/gql-block.json b/explorer/src/lib/mock-data/gql-block.json deleted file mode 100644 index 3dfdb41b9a..0000000000 --- a/explorer/src/lib/mock-data/gql-block.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "block": { - "fees": 580718, - "gasSpent": 580718, - "header": { - "gasLimit": 5000000000, - "hash": "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - "height": 495868, - "nextBlockHash": "6011556208a85e6001bd01ccbf936486b91318a7f6cbcf7ab810adf6fae34204", - "prevBlockHash": "07b74b35c2c7cf8f41426cd0870bafa1a2c7adee3fdd876643548096186fc4cb", - "seed": "af15447e3a004a79d4ae8b084f7b76b78d95880bb63e1cfa79250a310731f52e6d84ee42a5d6fc2cb99c5b1f489761f6", - "stateHash": "20bb0a677b93f084afadfd34bec3ac3feee33a020b81d9549afa2268e8543acb", - "timestamp": 1713298022 - }, - "reward": 16000000000, - "transactions": [ - { - "blockHash": "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - "blockHeight": 495868, - "blockTimestamp": 1713298022, - "err": null, - "gasSpent": 290866, - "id": "3a3f6f90a1012ae751b4448bcb8e98def0ba2b18170239bd69fcf8e2e37f0602", - "tx": { - "blobHashes": null, - "callData": null, - "isDeploy": false, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "3a3f6f90a1012ae751b4448bcb8e98def0ba2b18170239bd69fcf8e2e37f0602", - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "bd5c99bb720b03500e89f103fe66113ba62f2e124ed9651563f38fd15977719f", - "blockHeight": 495868, - "blockTimestamp": 1713298022, - "err": null, - "gasSpent": 289852, - "id": "07bfabea1d94c16f2dc3697fa642f6cecea6e81bf76b9644efbb6e2723b76d00", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "07bfabea1d94c16f2dc3697fa642f6cecea6e81bf76b9644efbb6e2723b76d00", - "isDeploy": false, - "memo": "some notes about the transaction", - "txType": "Phoenix" - } - } - ] - } -} diff --git a/explorer/src/lib/mock-data/gql-blocks.json b/explorer/src/lib/mock-data/gql-blocks.json deleted file mode 100644 index 1ea84c7360..0000000000 --- a/explorer/src/lib/mock-data/gql-blocks.json +++ /dev/null @@ -1,1680 +0,0 @@ -{ - "blocks": [ - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "3d43be31a8cb5d3f61b4e8391800a01033d650b11c4c874210dbaa3c118474a6", - "height": 1365454, - "prevBlockHash": "2bc290511be774ec9c04e6c0ceb2469798242b997422c542a7d6b0b6f3368414", - "seed": "b53d27ff844a587ffacb98205018048eda5ab0fbf0afbfd5b364082d42a350e2202199a227ef08d0254c22b4b2bc6c6c", - "stateHash": "71706319ba4d69556437241388d4f879cf8064e15fb6b277ba5e2e685481485a", - "timestamp": 1716906414, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "2bc290511be774ec9c04e6c0ceb2469798242b997422c542a7d6b0b6f3368414", - "height": 1365453, - "prevBlockHash": "02f38d2e2a986cf77a70e8fe4f333ef9c5e075987891f3f526c8a57590800178", - "seed": "8a88ba812fcc36d0301ad151a3d131a4a2d8baade721b5946f5b6013a58d08c98d82b6c623dd5df57c7484bc1e91ff7c", - "stateHash": "6fdc84da8b5d4fc76c991e934dcf7aada370546db30f86ea59fbee5e1b77d223", - "timestamp": 1716906411, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "02f38d2e2a986cf77a70e8fe4f333ef9c5e075987891f3f526c8a57590800178", - "height": 1365452, - "prevBlockHash": "c79e31ce8e6133ebfb0d85649a12167769ddc83420550faebc536e613d74d676", - "seed": "89ee1d0312944e83a401b70aaee3f877a675dc56e0b47baa80703df56f19df4048e52f0f826a61031a4488cda8157de7", - "stateHash": "d6bfd42e65d382606521d1557184630d42b1f1028baab591bfa8ebac3c796fa5", - "timestamp": 1716906407, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c79e31ce8e6133ebfb0d85649a12167769ddc83420550faebc536e613d74d676", - "height": 1365451, - "prevBlockHash": "22ffe1b159e1b33b06d566b3ce3119af6f4bec4d2a3f6916560fe3cb30fcc1ef", - "seed": "b1008da0695fe39d39b649ba2b7043a6dc3af264d445c7abe9588b6f2c6182dc489a58f43838a9858cd2137d8f556f69", - "stateHash": "23ffb65da6e05ae36dea94465952263a3d4ff324cf6cd09b1225dfca1414a0d7", - "timestamp": 1716906405, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "22ffe1b159e1b33b06d566b3ce3119af6f4bec4d2a3f6916560fe3cb30fcc1ef", - "height": 1365450, - "prevBlockHash": "79c2d3213df80f8113d1ca16c49b1818fb5c31d1437e0a447719491a9c1b5f85", - "seed": "b4e26117af56c8c5c7012e6dbeca88a9d1c3d189bf104c730f16a5cf6ba4296424435bad9e1047eaaf7f1bf326063c2d", - "stateHash": "cbd0906fe34d7bbd72607b6fa18462b01b25d965cbda6cd1cee8678f4dbfa139", - "timestamp": 1716906402, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "79c2d3213df80f8113d1ca16c49b1818fb5c31d1437e0a447719491a9c1b5f85", - "height": 1365449, - "prevBlockHash": "fb3e82e43b141409156f935afc69ccb09a59a72a10258401b539123981db571c", - "seed": "a448a5bd6d4ff7ea139c1f3d23a4664427c6fa5052f2973e95316d649e4c6305322de093a157f5d986f3498097d3a94a", - "stateHash": "2f6412c651e3e84d34fb1dbb02578bd37abd3a0a4e2e1f1a7b9c70b2282534db", - "timestamp": 1716906399, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "fb3e82e43b141409156f935afc69ccb09a59a72a10258401b539123981db571c", - "height": 1365448, - "prevBlockHash": "4b402a917bf42561096a9224e6451b77b8cbdc50272013442eccb5fcc542ef12", - "seed": "8baac37d4f0640ede8c7a55956b05a247ae9e0bbccb18e4e9da22b8e5dde139296e7461315d2e341b8e02fb784042412", - "stateHash": "895de1ef950cb73ecd74fb1806822a3b7c6eee64588a21a6a991cdeb362ee5f3", - "timestamp": 1716906395, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "4b402a917bf42561096a9224e6451b77b8cbdc50272013442eccb5fcc542ef12", - "height": 1365447, - "prevBlockHash": "38d069620a7cbad7cadb10ecc797b1344284b6324ac85f5e126226a08d47398a", - "seed": "854a2252fe0ed059b024fb3413182a5c556aac610bc41def0d64a0341aa52709d7160707c44639a28153751a678be8c9", - "stateHash": "45a13060dc4484f5b58888c0303beda3438f0e3a198b579a5aa659ae74cf3cb0", - "timestamp": 1716906392, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "38d069620a7cbad7cadb10ecc797b1344284b6324ac85f5e126226a08d47398a", - "height": 1365446, - "prevBlockHash": "14c7d9f5e44d599a167d82a449d73daf54e32bf002c6cd5893de5f904024922a", - "seed": "9192ca845fb8eb33762a59a5de33da12d173a43b5edfd69929c139c429155e4c0fc9a9b34165404bfb594d3fc2df7cf3", - "stateHash": "b7db6d50b1d400ad7374cb35d5c8cb7714073bad4f836c5a5e3a9d8800faa7ba", - "timestamp": 1716906389, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "14c7d9f5e44d599a167d82a449d73daf54e32bf002c6cd5893de5f904024922a", - "height": 1365445, - "prevBlockHash": "e8e93e35a501d03e47b9693a32ab58ba1dc3ea1e59dd860de0c7085ff1548838", - "seed": "837e7321589588d80177ff7c69312988a94a05e3222202d40cdfd77e533a6a97f408f2c992308939819f8a7be51cd607", - "stateHash": "75d72e576363c92c9fe02e4ba1b8c3b55d5cc3671ac623b0e00b056bab417e86", - "timestamp": 1716906384, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e8e93e35a501d03e47b9693a32ab58ba1dc3ea1e59dd860de0c7085ff1548838", - "height": 1365444, - "prevBlockHash": "32b85beacd508de90fc292914101edc47f96391896ccca8b37c90030a0c6cf5a", - "seed": "a321246cd65acbeb5893de37faf0a4818fc18b2b266042ab6671e3facd8eaa9dc17c16aa43bf034492fad768da888b85", - "stateHash": "92384b3361e4d4dbc764eb8ce5cce4e585e8407499e2b0e51e3b6fed3a67307c", - "timestamp": 1716906381, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "32b85beacd508de90fc292914101edc47f96391896ccca8b37c90030a0c6cf5a", - "height": 1365443, - "prevBlockHash": "0a4e8eb58f138cad89fbb5c281771a71c5efef3fa3d1ecfd66526b0214e9c02c", - "seed": "81c335087cd5a4fa19253119689b4f21ccf78f4786a6a7ffef163ed900db19ccbc3a1b967a54771ecd045437ecbd5e38", - "stateHash": "a1012a5ba8091b444138841fc176c62cedf1df134cb92ff1e7c29013700b7010", - "timestamp": 1716906369, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0a4e8eb58f138cad89fbb5c281771a71c5efef3fa3d1ecfd66526b0214e9c02c", - "height": 1365442, - "prevBlockHash": "261bf76439948b7c371f6b14f6b94b43b0c992b85f35abd615c41407aebac019", - "seed": "b71753c4f935339a99d96b85f6474923d86a5fe0762ac401a0e1cda18041d8d32121fdbc6f2dd165b35988827674d96b", - "stateHash": "6213133a19018890473367825c5e2fb35677c2db4723adbcb924c29f8989dd55", - "timestamp": 1716906358, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "261bf76439948b7c371f6b14f6b94b43b0c992b85f35abd615c41407aebac019", - "height": 1365441, - "prevBlockHash": "0606a98c2bf324976e64c85c90e12a8e38275b9a24da2ce807be0cca98bd3f2e", - "seed": "b599441b40170879db1633dc2cf8c1e4497fe514eb95eea64ff0765df3c0fefb0b4ef3515ba6f776bb7920a121f81b1e", - "stateHash": "55e019411a6670ae802ab67aba73d8085f0775bcbb39362e6448d2581313ea78", - "timestamp": 1716906355, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0606a98c2bf324976e64c85c90e12a8e38275b9a24da2ce807be0cca98bd3f2e", - "height": 1365440, - "prevBlockHash": "aedec510648383bd7bea1c4510a81ac0f3508934b6d892ab6385e5c94cd49169", - "seed": "89b50c06c3420e389d208a04e475d88c946fd2f9e12f93d35afe6268b2f67adbe6fc5117a98497ae1d07dbb6e65b9dfd", - "stateHash": "81e4969a64036aa55ddf9f914acef551fbf6ca580c3299094d4d33c0b0f34efd", - "timestamp": 1716906336, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "aedec510648383bd7bea1c4510a81ac0f3508934b6d892ab6385e5c94cd49169", - "height": 1365439, - "prevBlockHash": "41214e61edaa4cd36a64450ac45475206dbab4471d36d2d8000c83979eeb3c01", - "seed": "a7ce68ee1321716ca76775a976402e8c7ee0a9b5f292368064701b5dd9a9b14a3c90303d336a969040ff7006c40c447b", - "stateHash": "1777b6aaf71637f6c123c75c2c67f88212b199792493e4955cc5a8df1fc8c66b", - "timestamp": 1716906333, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "41214e61edaa4cd36a64450ac45475206dbab4471d36d2d8000c83979eeb3c01", - "height": 1365438, - "prevBlockHash": "52c6834f51e18e46a492709ca630969be2a0d658d76bf6b5de691cfc530237b6", - "seed": "aef608bc0a61bb521896a13326b670306672ab4b218c1ea4aa101351201255843e6a04aeba090173d86baea565c241b0", - "stateHash": "c2cca5a85032355738baf0cf2747d842a8f417161062583a177bc49c621b230c", - "timestamp": 1716906328, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "52c6834f51e18e46a492709ca630969be2a0d658d76bf6b5de691cfc530237b6", - "height": 1365437, - "prevBlockHash": "dd0d2a83d32da3b1031aba2306ba11ba16457014fe39f2e5818dd161388366c4", - "seed": "a7b1bbc0ce003121bbfc1693e88dae50282b670d01cabeeced56e50f46ef982a0b4907bb8fef81f985ebae1208b03693", - "stateHash": "4f648f2f09da5b27aba4712586fb05c2f7669cb8e9ec2b14413eae2a121bc1ef", - "timestamp": 1716906324, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "dd0d2a83d32da3b1031aba2306ba11ba16457014fe39f2e5818dd161388366c4", - "height": 1365436, - "prevBlockHash": "08cb4a5395e5a3d56a254e5f6c7bc0887fc73af83347e65b89662457d9717449", - "seed": "a9fe1a88ce6fcf1ac4fcd0ae0a1d6553b47aef2a9a05d9761cfd00755b9624f3a2c3e27d87d8745126f3011af81f2055", - "stateHash": "b415967b1ca82ef4366b1654a1ee06506d02813236b4167f4b0c67dd6bb53ed7", - "timestamp": 1716906320, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "08cb4a5395e5a3d56a254e5f6c7bc0887fc73af83347e65b89662457d9717449", - "height": 1365435, - "prevBlockHash": "25cda263189bf2ed11f114592e69d0ab01d74dc9a398824c97de095e4a3539b1", - "seed": "813b9becb64918f47013e1ab747cf7b6db32f395c2c13019c96ebc86da3a774f5f62743f07d73aaf6e743c905221062d", - "stateHash": "1ad0e689ee4c9f8b5b6decc71251270e8daf55c67cd78df5c6c004e4672a4035", - "timestamp": 1716906318, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "25cda263189bf2ed11f114592e69d0ab01d74dc9a398824c97de095e4a3539b1", - "height": 1365434, - "prevBlockHash": "53f7700e16a8050f1270c4758fa8baf8b03571ead2ca979f16c61c7225731155", - "seed": "b04a7715e250d29895e6d03aeae43c8863aed9d4b1da1b00dc368a41d2ec14123298824b53c45ef206f7b9fde0393041", - "stateHash": "c02a9a4dc1085a499b80a1f5c356e5c5dce23b90c0ff3ff8a9681322fc137d96", - "timestamp": 1716906315, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "53f7700e16a8050f1270c4758fa8baf8b03571ead2ca979f16c61c7225731155", - "height": 1365433, - "prevBlockHash": "db10709204320b0f29433cf8b9754e4c09569a440630a3a981a80fc687a8ea4f", - "seed": "b139d27244f1c2732e2daf87872a28bb9e75e3d7801cdc369abfe885e6c8505643ea86830a19c6323ccd74afc06461eb", - "stateHash": "894898b1cbfbf58c0d1449b42f36d0a8b486a2006c293f03d98ccb1ac9a24463", - "timestamp": 1716906312, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "db10709204320b0f29433cf8b9754e4c09569a440630a3a981a80fc687a8ea4f", - "height": 1365432, - "prevBlockHash": "71a59ae11f1aa5b196f111e7b84ad3ffcca506bed096197710c4fcbf700ab5a9", - "seed": "a65c4ca177f08f8a87c4d3dc21f5a1794bf40c8608dc6d1036cd03b491635b68d5916a8c7691a0bc6ec8243720e205dd", - "stateHash": "afdc24fea03d2cd5482cd520db6e1179982ee930683c859bbdcf5d027cf974fc", - "timestamp": 1716906309, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "71a59ae11f1aa5b196f111e7b84ad3ffcca506bed096197710c4fcbf700ab5a9", - "height": 1365431, - "prevBlockHash": "7d560df4db4967d417f8d331cc5462b15ebebb693d51c3c0ad0698d5d650a7e8", - "seed": "87be941f4e1ff105d87ff8e135bcca1bf33a939e45514911ba659b1a705559749401e9fe13fd0a9c097245baef504a8e", - "stateHash": "fae674c9f60ffcc78a801fd4c51a198775f3f8ec26d76e01a9a9601dae247f7d", - "timestamp": 1716906306, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "7d560df4db4967d417f8d331cc5462b15ebebb693d51c3c0ad0698d5d650a7e8", - "height": 1365430, - "prevBlockHash": "243ff8b732e7bbc79af8585fade4cc743757924fba36f3c6fa665c977b0e3a0a", - "seed": "967ead70661d19bb85a3f9025b4044486d1df9e9c67e0f5c56c7f401189eeb8b61dbd5a6ecb261283d48603f4826b020", - "stateHash": "33564c66578d41a9646ab40fa09e7fe537db11f82000c260918009bb20c30067", - "timestamp": 1716906301, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "243ff8b732e7bbc79af8585fade4cc743757924fba36f3c6fa665c977b0e3a0a", - "height": 1365429, - "prevBlockHash": "607af88d64391a32108b1232f422da091b134c002b8c0c2721925f127c3147b5", - "seed": "8c55176d5d4de73740c49cdadc2e211c2e44e34cdb5c8f24032f4670e26001500e46f4ae4dcf99049781b16fe31049a3", - "stateHash": "e5c64b864426291368ca290173b11e8c2a1166d9f2eb10e484881b545c4886ea", - "timestamp": 1716906298, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "607af88d64391a32108b1232f422da091b134c002b8c0c2721925f127c3147b5", - "height": 1365428, - "prevBlockHash": "6f77cc3673d04e11beaa1e97113daef32e2c56e4c1dcd1fbd3069e0a31494287", - "seed": "b596e20fa72bc29fbd16ee7891c5a36121b9fa13c119d009e6ddcb3f79d1498ca1f7fb566782685d99454b1e5c67a227", - "stateHash": "a5932e6cd478b26c31843cf5b97ff0297c89e4343245d1a9f62b762397fc5029", - "timestamp": 1716906295, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "6f77cc3673d04e11beaa1e97113daef32e2c56e4c1dcd1fbd3069e0a31494287", - "height": 1365427, - "prevBlockHash": "aabdf592333f8a39071ade290300e8455a9e0848917e3823ff0546149f93487f", - "seed": "857202a0254d5c969a9828b94982df9708dc2fe6f26082c8af4605166f5d2c52e32c032fa4b6533a836ee98fb192f250", - "stateHash": "a31e3e2f4d0d01ad4ac5b6e17c7a36132902309088a8935a8f539ba7bbfaed5b", - "timestamp": 1716906291, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "aabdf592333f8a39071ade290300e8455a9e0848917e3823ff0546149f93487f", - "height": 1365426, - "prevBlockHash": "9f8200f910e231448e3351ca90651c80f1b8d68067863bea05e78d94f25fb2fe", - "seed": "a1e2c523e8e5fd1b571774f17eff473a424bfc6f00a906fb0767831ab62c369ce1ec389f935ea2aa27a268a44189bb28", - "stateHash": "99630cb79b300f3e5c61957fd6464f7b933567f33034795aae945e9e59a4164a", - "timestamp": 1716906288, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "9f8200f910e231448e3351ca90651c80f1b8d68067863bea05e78d94f25fb2fe", - "height": 1365425, - "prevBlockHash": "7cc1dae1ed6e05fc26eaf646c4799ffd588447e07fa6aed952a1654f25455eeb", - "seed": "a5df38679037ca9c3cc21fa6b52d113857953479a1077d85a99a72a848c3440fced7ce90d93165bbcbeec5cc4185be98", - "stateHash": "3efff3c03b8424e4d4e3b4e37984c83a3585b4d7855ae0bcd4833f32fad15efd", - "timestamp": 1716906284, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "7cc1dae1ed6e05fc26eaf646c4799ffd588447e07fa6aed952a1654f25455eeb", - "height": 1365424, - "prevBlockHash": "4167ee20fff95ee5414dc03f99b12e7b543f7b1b212f4c58f67244ad955c63de", - "seed": "88bce52aa7761a87854daa89552e5928796d0129a7b7ae91d9b00a544094bb26922d6645b2685faa0426d4ab2efc9b17", - "stateHash": "526e8721e12c2e952c43efba9deede49ea0f0f1727e6cacb703399b66afbe2ae", - "timestamp": 1716906279, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "4167ee20fff95ee5414dc03f99b12e7b543f7b1b212f4c58f67244ad955c63de", - "height": 1365423, - "prevBlockHash": "e6ab86f425e06839db9fb6c5eacf010f7763ea6ca0b741b4558425a3ac8e3257", - "seed": "b4ff54fc6f4f4dc231a114dba13116f73f7c953dee57d0b4fb8199737c48eb6c772b01f3985791d5da7a3fb6977302ef", - "stateHash": "929e54d34da9eac870857aa3d8c818f94be5a7ac78c4f40cfb0000f2e6796855", - "timestamp": 1716906276, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e6ab86f425e06839db9fb6c5eacf010f7763ea6ca0b741b4558425a3ac8e3257", - "height": 1365422, - "prevBlockHash": "db0189eeefd5e264bb0c3f0e02ed4b841d3969908390543703590372f0911037", - "seed": "a262e64a004ea42f024427bfcdb071af81936e17c6486fd8c14f4b9ba1cf5683bfb17f92b7a7d63b149c3470a76c17b1", - "stateHash": "abacc0955603d76088b5b7453fa0e542a089f20b857445bff498ddf2c5195039", - "timestamp": 1716906273, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "db0189eeefd5e264bb0c3f0e02ed4b841d3969908390543703590372f0911037", - "height": 1365421, - "prevBlockHash": "d668b2f2ef43078d0563cc055bb2b56bcf926151fa87cd2606f8fae1947de6a4", - "seed": "8f15f5d0d650d0a7e8a99f90a2a8391565f604d69ac67a288e2fc8065959b577fffa4217262337430ba7d21cfdcf971f", - "stateHash": "df245af3a51c803764a2efebfc82086de9a2286601ec96dc066d46fd786d2ec6", - "timestamp": 1716906270, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d668b2f2ef43078d0563cc055bb2b56bcf926151fa87cd2606f8fae1947de6a4", - "height": 1365420, - "prevBlockHash": "87af07a79100dd691de552e55b959f649d2e7d85f52399b465f8507dcc9e6767", - "seed": "b195bf7a29e392c1ebde99752868844108a9ce0d11849681cf75a3e1dab060721959989889552d443b32d9772c230ad8", - "stateHash": "ef9583aeeab9fbe2904aebfb454ccfe9f9744c7db1eb47a965d738f537758a48", - "timestamp": 1716906267, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "87af07a79100dd691de552e55b959f649d2e7d85f52399b465f8507dcc9e6767", - "height": 1365419, - "prevBlockHash": "e7528b5757371da23a9d620ed67d94a192a183f9966dac559f1d9c0f0ad8b526", - "seed": "9374c0d17fca748387538e1024a984acb8b6cd364c2c3f8403c429f900abc094d5268209313b9ba0a380d36b9ce93563", - "stateHash": "cceacad8a4fc67c027ebd5c62abe507000df74f5a59ef8173a24d759b4148bda", - "timestamp": 1716906262, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e7528b5757371da23a9d620ed67d94a192a183f9966dac559f1d9c0f0ad8b526", - "height": 1365418, - "prevBlockHash": "e53a2aeded9e501312027f056e94b08e16e35dcd8ffb6bf42ce48b14700fc62c", - "seed": "8390acce1dba40db6df3a07c6e23dbdbafefeb6b2f536c6356d41bff207c8bed295307133ccfe1085699892e3ffc18d5", - "stateHash": "59a672e853f3834ab34a6aa7cb76bca4107d24cb4dfc618c48648db385926e99", - "timestamp": 1716906247, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e53a2aeded9e501312027f056e94b08e16e35dcd8ffb6bf42ce48b14700fc62c", - "height": 1365417, - "prevBlockHash": "8eb48df2f0319266af1492039b5dc977aa44ecdd068cf80056679e8a847495a7", - "seed": "9934f98d076b023ef0045784e6a8fab86e076dcc1bdf71a1e1528e156d25b44bb71e836c6ee2fcb9d85301a98e206fdb", - "stateHash": "22d48c31fcf73a5504a85cc4c9595ae34acc46814b1ae4eaa720656ca18fae6a", - "timestamp": 1716906244, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "8eb48df2f0319266af1492039b5dc977aa44ecdd068cf80056679e8a847495a7", - "height": 1365416, - "prevBlockHash": "f1e27de4470a562e09c3e4f5a474582fac8eacd427bebeff41cbdf141c484f7a", - "seed": "b3c78e6a313044bd0e77a68d2be3844be6b570aed788418a529a2f2d7dccb7139e607614b46a6315c19d1268f4169e9c", - "stateHash": "075179d569abfde2701456266843dd46ed94ec931c90606fd58db9533f4cd273", - "timestamp": 1716906238, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "f1e27de4470a562e09c3e4f5a474582fac8eacd427bebeff41cbdf141c484f7a", - "height": 1365415, - "prevBlockHash": "715fede150a407a407b9c0b4822687a6d420815c30070c5ac1e185eff3d72c7e", - "seed": "af64c68ba5b378f47f8e0842beb4d6cd0d557be74caeb8e7e291a51db7634abbdd8733bc9a896b30b5c76fbf34a823e7", - "stateHash": "0ebec47d4a980d46edaf6036262c702d1422f97a8e3151991694384a130f2687", - "timestamp": 1716906218, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "715fede150a407a407b9c0b4822687a6d420815c30070c5ac1e185eff3d72c7e", - "height": 1365414, - "prevBlockHash": "5560cbd0c59fa9b4491384d8b2ddf370c0708a1a70eee21dea0176b02e8cf370", - "seed": "a770c3579d70e84023753828c2f6665d94ef33d2ece6a4af3bb0268920398a113c3f39c79116cfc1f5018f1ca54c1a72", - "stateHash": "ff97d4605d1aceafa642546cc92d61ca5ca678491ab62388e5d516070b51cc89", - "timestamp": 1716906206, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "5560cbd0c59fa9b4491384d8b2ddf370c0708a1a70eee21dea0176b02e8cf370", - "height": 1365413, - "prevBlockHash": "bffcdca5b767682097c5f8e20d0eacf7998bb322b9b5fcbb74d2ffcff513a13c", - "seed": "abf4a3fe5d9adaa26cd072c9d19a5767aca84e9e6b45f7ed957c2d11a8136f78bbffca62ce50ce78644de9d05e7ccade", - "stateHash": "09413bfa570814d08697be5b0a6f81f22ac9f9eca1d0786ef19ee24558497338", - "timestamp": 1716906202, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "bffcdca5b767682097c5f8e20d0eacf7998bb322b9b5fcbb74d2ffcff513a13c", - "height": 1365412, - "prevBlockHash": "88443734e8189ef629a7f34e057483d846a7c20dbad5a8560d448a0cdb5dab4f", - "seed": "a8735cd1678b5df4c8304044d8d01c1038a9a9e0c58d90b5756a58d81631e41a79b89394d1384c05031c8edeb7ce316a", - "stateHash": "51c4f581116cc1581b6347c73670ad996c9f873e57396ce9a693ac9c058f31a0", - "timestamp": 1716906199, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "88443734e8189ef629a7f34e057483d846a7c20dbad5a8560d448a0cdb5dab4f", - "height": 1365411, - "prevBlockHash": "9b970ecb7661daaa3c1ac077f16a4221b894aa7c49eae7181ceb4f654bc91d03", - "seed": "8f817cb9eed0db14a5b0100b075a0eaec7c98bf975150285e3a007f05b5349219b85bf38344e727cc9c6940006820f68", - "stateHash": "91c01ec701036a7e348d0a0be310b9862c466b9dd9e5990b2258fd5ea6efbf2e", - "timestamp": 1716906195, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "9b970ecb7661daaa3c1ac077f16a4221b894aa7c49eae7181ceb4f654bc91d03", - "height": 1365410, - "prevBlockHash": "89c24929277dca8c7af8a61fddceda460e6a0d83da8f78867d75ef915eaa1706", - "seed": "a45dbc49bd7c037b9bc6ecd3e9a92020eaf40a843153ab6ea256514a1fdb27cd5cb54145db8942d240d2bd4ced259a70", - "stateHash": "caf286db3ac1806d18a53c42a4848a8763248df00fa7ca62307b5c3973a75189", - "timestamp": 1716906192, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "89c24929277dca8c7af8a61fddceda460e6a0d83da8f78867d75ef915eaa1706", - "height": 1365409, - "prevBlockHash": "b495023072cb635a7bc26eb978dc600a705d650d8353b664e2c9fd65eedb723d", - "seed": "83b642ed38850b7b8115ad3009e2c7c1d153d11058af01ab2bdce4d3b31e3258a8a1116e867825e3c612a789c9967eed", - "stateHash": "ad87653811cf35743707bf09647a60d0a046f73fb956b16d6e6fefc04e1ac3b5", - "timestamp": 1716906189, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "b495023072cb635a7bc26eb978dc600a705d650d8353b664e2c9fd65eedb723d", - "height": 1365408, - "prevBlockHash": "08b57cfdd716c801d0fdf59f7904b42ee84c0973bdcc47a52fe048e63f1c549f", - "seed": "8db54908d6056bd27acdf83945186f55354ae2f0d4dbfb8d990d4840e48abc10a95b6d75c52d2a793558ccae0fd713e6", - "stateHash": "2953e28bcf25f5e6c51f18b71c2b88533042a26ae0fbd0e9f465a15b224af579", - "timestamp": 1716906186, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "08b57cfdd716c801d0fdf59f7904b42ee84c0973bdcc47a52fe048e63f1c549f", - "height": 1365407, - "prevBlockHash": "54ad00960b1a74fd3ae71f8455ba38ad3d1af7f420e35d283b1f5c7062832c7c", - "seed": "940c74e2bd683c00f882041803b85193f8eccf20ba1a049028cc0f578d6248605915a07dc0b337ca7b7186010da3bafb", - "stateHash": "15e04fb8cc6e67b811b5f6ced041e8a9699e0264ed6bfa2eb31c70005f48b666", - "timestamp": 1716906182, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "54ad00960b1a74fd3ae71f8455ba38ad3d1af7f420e35d283b1f5c7062832c7c", - "height": 1365406, - "prevBlockHash": "e698de60373db72b813c18eb5047c7e43446737302df49d80df29bd73f75ba3b", - "seed": "b6372ed79d5f7b4b62769f6cddd494264f24db45c4e7367520aae60c0ea9b8ff3f1c1d895bb09d27529729f0ddf21107", - "stateHash": "923c2ad9a6cb5f94c87ba6c66b68023e49f9879b63adbdc91907c3efa533fc55", - "timestamp": 1716906173, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e698de60373db72b813c18eb5047c7e43446737302df49d80df29bd73f75ba3b", - "height": 1365405, - "prevBlockHash": "7a08b2d7233193fec8d3fdc1cc2be19057b3871b559f6a030cc1b964faf4397f", - "seed": "a0fcf4491ec390d2308fa20db2e6646979e94252fca1ef32974181710d69766b6eace9d85e77a39b30f1786bff4cf719", - "stateHash": "fa10263f1d3f2baf3759b12975a3e7b44f05d53da0e776589b656fcd7edc5edd", - "timestamp": 1716906170, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "7a08b2d7233193fec8d3fdc1cc2be19057b3871b559f6a030cc1b964faf4397f", - "height": 1365404, - "prevBlockHash": "2d9ac223e997cdeef47417f03fca525aa065f2dbefd9d722359f5192a6543115", - "seed": "b2d169d87328fef569ae816cf91c1adfec441b4f32fee4ecc01b935dcbf35c20c0e28030bf04d60a0d1e47739b6620fb", - "stateHash": "b39657583861ce46d33952bc2d2e4c9706e7df9a9a70d32b57e72a88e953133c", - "timestamp": 1716906167, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "2d9ac223e997cdeef47417f03fca525aa065f2dbefd9d722359f5192a6543115", - "height": 1365403, - "prevBlockHash": "d5617376df70765854750cd7a4915ea4f90088b94b2c561f5c245d04978d3c19", - "seed": "b1472b8dbb4c141db73d7020b1978251328c3e684e9359e49c1b86855b858c586587021878ceefdef3ec9ac0edf18fcb", - "stateHash": "3d00c2f03eee989155b50cce43bc09c0be14c1189072a1a3abad9e1d9ad2386e", - "timestamp": 1716906163, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d5617376df70765854750cd7a4915ea4f90088b94b2c561f5c245d04978d3c19", - "height": 1365402, - "prevBlockHash": "ae40769d686a12ae599de340ce4bac5f23824615647e6650428361e93d55c956", - "seed": "a444652988c81aea249e3b5626e647d541d6abb763149f60f834fb9dd60bbd9081340ce027e68dcf1a5a14cf7b61cd38", - "stateHash": "d848e7461be2bf86833a2d54469958abbf7d6d682badafe50a08409f08300c6e", - "timestamp": 1716906160, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "ae40769d686a12ae599de340ce4bac5f23824615647e6650428361e93d55c956", - "height": 1365401, - "prevBlockHash": "52091d8f8ef735c2b34a990d81490e141279917dbcf3a3bc1c568b48bff27fc2", - "seed": "ade7e78d541f0d49e9bb3115f541a62e614625cc6f929e2db05e0838cb1db4b33a6125899e28c3540897759f7ae59c46", - "stateHash": "cae75ef6f6f4225d77f587cc6657bbfd6f616935deb94526dc09db2119553400", - "timestamp": 1716906141, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "52091d8f8ef735c2b34a990d81490e141279917dbcf3a3bc1c568b48bff27fc2", - "height": 1365400, - "prevBlockHash": "42c22cd25054d321d08ac9b5c4a081290cabc90679e20d4a72b606e513a5aa04", - "seed": "b9a4d517aaa7cf6466f97a94bd56f3c40e5c8b6fe45203e2f3d6ba9e14f7d1f93130516c42ca7adb107d88786e853871", - "stateHash": "b8f943928133480b3a075d46ef8d2d423e74a2355928ed44fef3eb51785e9374", - "timestamp": 1716906130, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "42c22cd25054d321d08ac9b5c4a081290cabc90679e20d4a72b606e513a5aa04", - "height": 1365399, - "prevBlockHash": "19e8d908fab96e57dda27a45709947597efec694b70012ef1d2039e08ca47989", - "seed": "b61c374f08414ea24341f02b795d0d2e634feb809912049c840fa3c020f2103b31b5c907cb08f4fdf09b7d758d4d368c", - "stateHash": "d84fabc5e9a054497e3864616b1fed2ad6171d7386e040e7a71e0c63ce2ae215", - "timestamp": 1716906126, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "19e8d908fab96e57dda27a45709947597efec694b70012ef1d2039e08ca47989", - "height": 1365398, - "prevBlockHash": "52127d63b25e1cc79e453944e729e507977f340e01acf8a843aed20af8980735", - "seed": "8eedd8520ce9b7b81223706653186b39065306e21aaa4c87ba965046124184fae6be73f73118a4d9ef8f2157dae92dd3", - "stateHash": "62b44ed73c590cd13e89bc3bb0641d5754dee4e4fa12d7f7b0bfeddc47659278", - "timestamp": 1716906122, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "52127d63b25e1cc79e453944e729e507977f340e01acf8a843aed20af8980735", - "height": 1365397, - "prevBlockHash": "0ac4e071c799fd43c50b04712dab31912dee41efe88fd3482fc902e565c55a48", - "seed": "b24db9e2388b37030e5167109d38868cd8d543a01fd0b6a891e7c72a3b110b355aca85e11b5751f8635c049d81e52452", - "stateHash": "d736ce78eb9be2a20d6c52f0fb8194d580d889d9233e05eed5416b7f167be7cf", - "timestamp": 1716906118, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0ac4e071c799fd43c50b04712dab31912dee41efe88fd3482fc902e565c55a48", - "height": 1365396, - "prevBlockHash": "8ed7995072b99626870987106d354ff5444e17c8011e2ad399c81b115c9d4a6c", - "seed": "aab7548a6e61afbf9871677203dabfb97b043d563ee7eeb66ef6038c5c3b48c40996ce01b6fb7fc6f586fa50ba2ca2a7", - "stateHash": "2fc1ae9700be670176f5ab2e3aeed2797ba6ff26ac790af04b328701f91c8b25", - "timestamp": 1716906115, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "8ed7995072b99626870987106d354ff5444e17c8011e2ad399c81b115c9d4a6c", - "height": 1365395, - "prevBlockHash": "afd15498d2d1e83e9f37f1c0e08d2cf1df7270b31f90dad025c54326947dc996", - "seed": "a3ab24e3c21a9300031e622da5ecd5d4b2545fcbdba4c2e54ee6063fae5fef88bbe0317456b5ede3181c14435512af1d", - "stateHash": "7bb47deb6bf4d4035d2eaab602770907868eec3420d18f89fd4c56a68f908646", - "timestamp": 1716906112, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "afd15498d2d1e83e9f37f1c0e08d2cf1df7270b31f90dad025c54326947dc996", - "height": 1365394, - "prevBlockHash": "d465e07b83454a20b0efeb751d2168b042b01011fc29c2c2c27d02bd59c4fce1", - "seed": "b7018f5cf67dee4ae970455866abbbb914bcdde801042690c1dfef1aeba7e759d875578c200ebbd4c2bfaff8f3e67adb", - "stateHash": "b62908a4b0793a1aa8c12783473efedfaced777e80af2369d457d34f7e9e5bf1", - "timestamp": 1716906108, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d465e07b83454a20b0efeb751d2168b042b01011fc29c2c2c27d02bd59c4fce1", - "height": 1365393, - "prevBlockHash": "ed7ce1f3a1978adceb7b2009e611d45f86576250ead906ef1f5612773ff314a1", - "seed": "927a3adfbe4eb27bbcb2dc23e5acbcd50a932e7a09928fe9ae28944a01370d45fcb934885262b569a72122153d879104", - "stateHash": "a82e54ff6d3f21613a87bd8b5f096807d16b4b640d1abf29e0d679f6d58ca2cd", - "timestamp": 1716906105, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "ed7ce1f3a1978adceb7b2009e611d45f86576250ead906ef1f5612773ff314a1", - "height": 1365392, - "prevBlockHash": "901ac298122afb85823a93de1834fdb6bb5bf85224257da4a4bdbeece27213a2", - "seed": "888a7db4797052e278f930660506434fc794bcf823e69fe9c16f146a4ede0a40d3a1534efe4b24bda64b9b9305409184", - "stateHash": "1f9e9f3f7a30cb9b257d1a05716cd3983e5ea9c88694b711c0c43e28d93f66c3", - "timestamp": 1716906102, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "901ac298122afb85823a93de1834fdb6bb5bf85224257da4a4bdbeece27213a2", - "height": 1365391, - "prevBlockHash": "d7e1e9af2b87c9ecbfe9663686511da4c8215aa4c0e8f1d90894ff215f27b26d", - "seed": "b97c115570645f7dcee79f9768ed46de9c060af2c3139d1cdb86abfd42d89892ca45e32a89463ad76081df9c1ee0e96b", - "stateHash": "2b05c8d626dc68b712be2814413cbd69b51fbb648efaa1cbe2cd1386e872fbbd", - "timestamp": 1716906099, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d7e1e9af2b87c9ecbfe9663686511da4c8215aa4c0e8f1d90894ff215f27b26d", - "height": 1365390, - "prevBlockHash": "c643bd58953c932469817e5fd94e46450617c54d18661d22d5c1ee7f639df257", - "seed": "95f4c5a89e3cab0a82d70ca93367593c86c5adde8b045c1639671433b53487cd6d14a3cc2768b3a12b50d391642f1772", - "stateHash": "97d4552a5aeca9a9f5abf656db882bbd2b0d5954b43b25c533e290ab13f5897d", - "timestamp": 1716906095, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c643bd58953c932469817e5fd94e46450617c54d18661d22d5c1ee7f639df257", - "height": 1365389, - "prevBlockHash": "630a34b956be7f82d0ed681959c719848ac15ed71515d7accd250f780bad0143", - "seed": "acf143968fab2116beac954dcda46eb210221d117f12a96638a0b8f35e6c80d5126fab2283b4f2a49b5882ebdee86c9a", - "stateHash": "a88a444d1e5107ba58b4296e22a1b75c16babbc718930dde556378cbc2c43dbe", - "timestamp": 1716906091, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "630a34b956be7f82d0ed681959c719848ac15ed71515d7accd250f780bad0143", - "height": 1365388, - "prevBlockHash": "5f79202757368c7a36e88cbc9ce483a9cba0df6e856715f7f9aec55b5369dcbc", - "seed": "85053db6536eadc3e43af089d22fd2d057f3b7ae2e86fa2e8de5049ec1e6ced871118277f6ef11007cfb6a78ab04a105", - "stateHash": "a504c44b5aa27c0e27e7a8ba548b88cb6626e3ed75f10d79bb07a351d8f4e2d5", - "timestamp": 1716906088, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "5f79202757368c7a36e88cbc9ce483a9cba0df6e856715f7f9aec55b5369dcbc", - "height": 1365387, - "prevBlockHash": "8b52d30167aaddd7be5679e6e22acfc78bc978a185e3778f83ccd8538486924a", - "seed": "80b471ba4f9b021dc3afec188940d2fb2f0d3fa18cd052b14e6e374d84bdec74cae977429c7d14b784731f80e86277c2", - "stateHash": "01211b137c87ef8eb456b00b20234a2b6de95536276fd183010de3d00b7f74c9", - "timestamp": 1716906078, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "8b52d30167aaddd7be5679e6e22acfc78bc978a185e3778f83ccd8538486924a", - "height": 1365386, - "prevBlockHash": "c4e0395cd96cb3d0c9cafaeb3bd0763940e2f9c44dffa9e9c347853236914079", - "seed": "a28c0e3003228b0f3933417260bc5d42183cd60ce89c9fd97c961d5ea7bd6af31e340066b81ac9bce61a62d31a6ff19a", - "stateHash": "3dda0e2f8f09428e209f0097cd953b21394f9013cae4efeea737f93171c7565c", - "timestamp": 1716906067, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c4e0395cd96cb3d0c9cafaeb3bd0763940e2f9c44dffa9e9c347853236914079", - "height": 1365385, - "prevBlockHash": "c47d9df7d960f962207d0936bb05b72c3be291f7218a7cb4f253850457ca2f73", - "seed": "b56ab504cd5a4748006a6b22e6d4a8ac37e1fa79f2123047abcf0372f24b6955ba454417e8a532e51309a1a95453ef1c", - "stateHash": "3d9ecd15ce5ecede8703e4f4611727a417f83b178aa41a697da1bcda5ab6ab1c", - "timestamp": 1716906064, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c47d9df7d960f962207d0936bb05b72c3be291f7218a7cb4f253850457ca2f73", - "height": 1365384, - "prevBlockHash": "4a36e8bceac38dc47b4e556aa615ddb3d49a61f46dbb8be15b6ac7f31eb9f0a2", - "seed": "a7b74cd861b10ce461ada68bb56ce396f651a481f351a7f5d8f52fe2b06a4ccd77d8d07fcc8a136bad514ff7cbf5a266", - "stateHash": "aa7c0eac6013d149594725b8e2ee96f6244e1fe7d5ecb25ab200275456d73d27", - "timestamp": 1716906060, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 303163, - "gasSpent": 303163, - "header": { - "gasLimit": 5000000000, - "hash": "4a36e8bceac38dc47b4e556aa615ddb3d49a61f46dbb8be15b6ac7f31eb9f0a2", - "height": 1365383, - "prevBlockHash": "1a69dd575bb8c30b0be7dbd95c5ea74112bb01f8d9cc29ddf4481a16517bbb97", - "seed": "8236bd16752f16a839668e1079ccb938daa6a59f9d37e8acf3747fba609584e08165445a24af58c70392e72b5c70926c", - "stateHash": "d180131d5aec73c693f26e25bf4b3d569051eb3484f62c5b7df2486606df99be", - "timestamp": 1716906056, - "version": 0 - }, - "reward": 16000000000, - "transactions": [ - { - "blockHash": "4a36e8bceac38dc47b4e556aa615ddb3d49a61f46dbb8be15b6ac7f31eb9f0a2", - "blockHeight": 1365383, - "blockTimestamp": 1716906056, - "err": null, - "gasSpent": 303163, - "id": "befe14f664fe1cb95f89b7500cc8a8368b3cd8ab58f4897dd3c0132cbebde004", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "befe14f664fe1cb95f89b7500cc8a8368b3cd8ab58f4897dd3c0132cbebde004", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "1a69dd575bb8c30b0be7dbd95c5ea74112bb01f8d9cc29ddf4481a16517bbb97", - "height": 1365382, - "prevBlockHash": "4ae71148752de13cb252322813015dbf376f0ba3a9534d081ba838df6980ffe3", - "seed": "b3232873ac66a47ea4407aca645c9ad47c3d7774a66b54e81bc819a1ffc244f9db90cc00874bb98e586918c87aeb57ed", - "stateHash": "738efbe6cfeb031b10cf025d751ae7941ee855c11bed294560ab035726c4dfe5", - "timestamp": 1716906034, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "4ae71148752de13cb252322813015dbf376f0ba3a9534d081ba838df6980ffe3", - "height": 1365381, - "prevBlockHash": "4d3794ba5e80a8c4830c89fee903c75582742bc4440d634702ab60f9091f5112", - "seed": "8a5cbf4fc4501fdf28bdc345ba8a0cf5257d8c2ad73799565590aafa25aadd23deed3bcdf2e11475473fc2ca46a186e1", - "stateHash": "cc93ee47c06b809712b26fcf434339719ec6b8b748668826b7ca3f4cd1e01f8b", - "timestamp": 1716906023, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "4d3794ba5e80a8c4830c89fee903c75582742bc4440d634702ab60f9091f5112", - "height": 1365380, - "prevBlockHash": "0cd09d9db9ea109dcaac09b0c4c57bde18cccaff90f8e939cf38167ee027dbe9", - "seed": "a1f7c5e486f5c9155762cca47c78b66e19c49c9346fd08f25c18aac64edf6a72f5bfd908f67605e135190fe640ec8102", - "stateHash": "72fd2a746c8c1492b5334741726d8f41f05f53a4011fcbd4dda6de361cfd4a44", - "timestamp": 1716906019, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0cd09d9db9ea109dcaac09b0c4c57bde18cccaff90f8e939cf38167ee027dbe9", - "height": 1365379, - "prevBlockHash": "6071fdba310b5cdf28f7812abc358ac471de8451811ba5a78771c17ca1559fe9", - "seed": "ad8b5f7886bf322a3a83a2abd74554cdbba3b08cf48168a656041065e0030fc25ed29bec48f1ae5931981392b7f4293a", - "stateHash": "1bf700ed2fa56d17f9487390c435d006b898a0f8c5fdf644bb1636dadb9e0bcd", - "timestamp": 1716906015, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "6071fdba310b5cdf28f7812abc358ac471de8451811ba5a78771c17ca1559fe9", - "height": 1365378, - "prevBlockHash": "4eacfeaa6256aabf0094cf3c7f7433351fab78175fd76edaf437f5eef6a23b60", - "seed": "8bc474fb2fcb4bea1624cfefab2c33db197d4e3268279d89fbce269c960e6da3b4d1c422593ad5af8b11b5b6b84540a7", - "stateHash": "32b60df221a2b691ee013c3d58fa838f50eac8796a88f8e51562cbe44aed612d", - "timestamp": 1716906012, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 300422, - "gasSpent": 300422, - "header": { - "gasLimit": 5000000000, - "hash": "4eacfeaa6256aabf0094cf3c7f7433351fab78175fd76edaf437f5eef6a23b60", - "height": 1365377, - "prevBlockHash": "b4e1591d3bf1223219e1c81cfcfa7c7769285738ffd71ab6986e7536c42b10ca", - "seed": "926398df6cf4574134176329a191390fd09c3fae2582b3ea786b16703362c7b63e1939b2078a33e1031da1470f235acb", - "stateHash": "f0188f8d943980aadc0daf0857c5efe4633c6e4ea430ebf2fce206a3307967de", - "timestamp": 1716905995, - "version": 0 - }, - "reward": 16000000000, - "transactions": [ - { - "blockHash": "4eacfeaa6256aabf0094cf3c7f7433351fab78175fd76edaf437f5eef6a23b60", - "blockHeight": 1365377, - "blockTimestamp": 1716905995, - "err": null, - "gasSpent": 300422, - "id": "dd9249849db6143ae4bf3420da9a2bf90b402807f0ef4843d51dd06db35e2a0a", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "dd9249849db6143ae4bf3420da9a2bf90b402807f0ef4843d51dd06db35e2a0a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "b4e1591d3bf1223219e1c81cfcfa7c7769285738ffd71ab6986e7536c42b10ca", - "height": 1365376, - "prevBlockHash": "cdade5aed510e289c3a53076c02951e32a3d02cff2c31eb8b18c7c443c218d9c", - "seed": "b1e255d195751529e6cde0d2f3a91275440e2c50cf330e5b1469fddd1079f64e3c2885ba66586d749415e2e87999a99b", - "stateHash": "80686f0304a13a75b7a90c11a14d77786a977b50909e9f740be671a12b28cc22", - "timestamp": 1716905983, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "cdade5aed510e289c3a53076c02951e32a3d02cff2c31eb8b18c7c443c218d9c", - "height": 1365375, - "prevBlockHash": "ce292ad29ec9ed8b74b852bc01efbd4f3d905baac07d4d16a78e1137aea8c426", - "seed": "b9282a04102a37c4f8758ee31d46603ce944e19684be0d2f1745faeb335862b3740adc28c66b316dd620078400edf190", - "stateHash": "f220ae4ef4cd20a32cac57288dd607da03fe31f87c481e7459ca8582b2381848", - "timestamp": 1716905980, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "ce292ad29ec9ed8b74b852bc01efbd4f3d905baac07d4d16a78e1137aea8c426", - "height": 1365374, - "prevBlockHash": "04842b66527fe22e9a687a3c808bc5d2f73d3dfc6b64af628c37da7ef68230bc", - "seed": "8d48907e3ca58f2b250bc763da89b78aa7f5b0a803f93787428928601eebdfe020f67cc2328b2763c500bc0da063dfe2", - "stateHash": "342a276578b2da21eb670d696b97efb4b5bbd3cd13c9c96ff0ee4d0dfd818884", - "timestamp": 1716905977, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "04842b66527fe22e9a687a3c808bc5d2f73d3dfc6b64af628c37da7ef68230bc", - "height": 1365373, - "prevBlockHash": "20402f1fa1f826bfcff92e0808b976d19bb1201fe643894959ae2ac1794a9138", - "seed": "b73201497c53f43d0a33cb9eedd5a96b8ddc7df85f1ff737f4f45afe3ace27c1e69028d172f63de34f6da277ee2aa10a", - "stateHash": "bb26ac63bc917fe4ae6b8be64710dc148c5e110b88695047c754b322792a9d5b", - "timestamp": 1716905973, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "20402f1fa1f826bfcff92e0808b976d19bb1201fe643894959ae2ac1794a9138", - "height": 1365372, - "prevBlockHash": "fb261a2f374137a651d3a0e7b2715fac39099cbc8345e2b5cf0f79a48cb48b57", - "seed": "97671badea07b99e38aaada850d736d73dd63cf679e56a925fe576cd70f73681851124c9b8b7943ff06a57c19c8d68f8", - "stateHash": "0bd68ef70a6ab88afcd23d923c01b468309092bbb04cfd577cedc2179266bf25", - "timestamp": 1716905970, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "fb261a2f374137a651d3a0e7b2715fac39099cbc8345e2b5cf0f79a48cb48b57", - "height": 1365371, - "prevBlockHash": "f470b7a09372daffdc34db36880d4a40a5fd5134831e1800b18408834779c066", - "seed": "a52bcc09dc595cae825b7c5ccdb5dcf640e1708f727f34a1de69bd7ab7f96af2ba15a51a12689efdb992c8201a003d41", - "stateHash": "86fae5ea6c0c920fee822113629df8f63887657569fdc2be6d0478b246cddf74", - "timestamp": 1716905966, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 291862, - "gasSpent": 291862, - "header": { - "gasLimit": 5000000000, - "hash": "f470b7a09372daffdc34db36880d4a40a5fd5134831e1800b18408834779c066", - "height": 1365370, - "prevBlockHash": "006e42e138e4d44da00eccc461cf029befbd8e50c330420df90df1f1274dd0cc", - "seed": "84c168a814ab67ffbcf55ba2b1bad4d147550226a462ea6ad5e8123cf87d328d9fbc6c8afb0fd52087e304c09b3322a7", - "stateHash": "2597311c5ef3eabf62a4d8a7acfcb05d985797fae3d064e7d7140c4af73c562a", - "timestamp": 1716905963, - "version": 0 - }, - "reward": 16000000000, - "transactions": [ - { - "blockHash": "f470b7a09372daffdc34db36880d4a40a5fd5134831e1800b18408834779c066", - "blockHeight": 1365370, - "blockTimestamp": 1716905963, - "err": null, - "gasSpent": 291862, - "id": "1466ebfcaefcff92b8bb88feb86aab902a73d6062731de52d3f22d502136fc01", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1466ebfcaefcff92b8bb88feb86aab902a73d6062731de52d3f22d502136fc01", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "006e42e138e4d44da00eccc461cf029befbd8e50c330420df90df1f1274dd0cc", - "height": 1365369, - "prevBlockHash": "1757ee1ecbbfff2c2033d9e6877c5c0ee2d6ead0700209b3a54273f088d558b1", - "seed": "a7d4baa2589e2480840d73908d858091f7fe34367476256d81ab9f6939914b988b3fc7452b57b348eab663cec5eaeadc", - "stateHash": "9de5806088cb2e436d1aec6b5825ae6f6d14f5340ecc54c7a416bcd8a20b6f57", - "timestamp": 1716905960, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 290747, - "gasSpent": 290747, - "header": { - "gasLimit": 5000000000, - "hash": "1757ee1ecbbfff2c2033d9e6877c5c0ee2d6ead0700209b3a54273f088d558b1", - "height": 1365368, - "prevBlockHash": "6d6b5cc74e75e80eb223bd6fce083a8050ee12c3bc2cdffc33c1fbf60ea4e6af", - "seed": "8939bd4cef75bbaf3c653b67b6a312235d63ef4541f5f855527365c193b51d898e0dac008735f40f36a72c40027f1965", - "stateHash": "1aa1d3a8184f7d4e386865b8bb9ea5ae3afb93d282cb9d42c85c75fca36723a0", - "timestamp": 1716905957, - "version": 0 - }, - "reward": 16000000000, - "transactions": [ - { - "blockHash": "1757ee1ecbbfff2c2033d9e6877c5c0ee2d6ead0700209b3a54273f088d558b1", - "blockHeight": 1365368, - "blockTimestamp": 1716905957, - "err": null, - "gasSpent": 290747, - "id": "15af4e04d4f34b89a77601945aaec5c284ff71ed076ba3e4c7b6db1c7cddb80d", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "15af4e04d4f34b89a77601945aaec5c284ff71ed076ba3e4c7b6db1c7cddb80d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "6d6b5cc74e75e80eb223bd6fce083a8050ee12c3bc2cdffc33c1fbf60ea4e6af", - "height": 1365367, - "prevBlockHash": "0e4c0318df13c598ae8f476ce9191cfcc6dcdd6a0e434200aabc6cd5f7bc8cd5", - "seed": "a4e03f5553adae327e166b0087a312ae0e11d6a009bec50599b49f6e2c91f532c38c2abe8fe6e9f504e437379331b3f9", - "stateHash": "aa8f6ddbf3eacf00321f7deca0d5ba0a5e69f3b5420b15e092483552e119c7b6", - "timestamp": 1716905951, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0e4c0318df13c598ae8f476ce9191cfcc6dcdd6a0e434200aabc6cd5f7bc8cd5", - "height": 1365366, - "prevBlockHash": "c875e74b9719d2107ad2b3352d2f5a9548a7153b386d17b02e3275cc38df7f4b", - "seed": "868a054829cda08b0102feb5562e0246a0c5775d9f2240039ba50f0c1f7649c04ce9c36d02dfc163c2468dac02a46d6b", - "stateHash": "aa23004135b319f48308ae37a88f409540232281069709e237733d237d40b845", - "timestamp": 1716905948, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c875e74b9719d2107ad2b3352d2f5a9548a7153b386d17b02e3275cc38df7f4b", - "height": 1365365, - "prevBlockHash": "ce97c75a165e10a09ec95dc973f9d26b7973f98cba6e9b86a1b3a44ef5535e75", - "seed": "a5f434a24eb0899e342f251ff087f00165e494047c9180af3011de1d27d831d4508c28e80b773b07a7fc012e121a3e4b", - "stateHash": "1ba09743d20c441138692483a1d526a1d9ca0837ff43f32cc38bf3c9848c9051", - "timestamp": 1716905945, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "ce97c75a165e10a09ec95dc973f9d26b7973f98cba6e9b86a1b3a44ef5535e75", - "height": 1365364, - "prevBlockHash": "e00b95872217a536c2b5f1b964538befaefbda8198cc51401bd26d32bc54292f", - "seed": "b2abfbf50da5ed6d53f7d6cbb4f8502e9d9947585ee002a2f458358f59a4d093a984a99f23e9eff2de75f97ff1de366c", - "stateHash": "3533f499e94d2bd457300f4a4ab9519130741f859f882c47c89c12283f210065", - "timestamp": 1716905942, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e00b95872217a536c2b5f1b964538befaefbda8198cc51401bd26d32bc54292f", - "height": 1365363, - "prevBlockHash": "d7a976154ea4050afd88a9f8003a3a25b1a3f457decfbcc3874d03754d4f45dc", - "seed": "87ff9a3216b2508c6156f7b0e45f3e5042542ce34b779a767ec3cb66104afc1833241073e19c727c9cdeba342106edbd", - "stateHash": "3d53d329f15d47cdc1b844ab0640fad3e99ff4f545b560f2ec44ba299cf181b5", - "timestamp": 1716905939, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d7a976154ea4050afd88a9f8003a3a25b1a3f457decfbcc3874d03754d4f45dc", - "height": 1365362, - "prevBlockHash": "44ab45499e98c6f98b4bfa0d67b1a663ce494f6356722bbf1cbf2fc82d69e475", - "seed": "905a703faeef6968645db6b1b42b698612b299b42348e45c1a9493762a94b1d5b7d2ff6ca0147987befb37fc5f75222e", - "stateHash": "c724dd7de1bef4cb1b55975c7c386d2310843028b5091425384c24ff0473cbeb", - "timestamp": 1716905936, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "44ab45499e98c6f98b4bfa0d67b1a663ce494f6356722bbf1cbf2fc82d69e475", - "height": 1365361, - "prevBlockHash": "d5685929c1eb1f5ae870fd99601ef9045f1ace736b25951c4d894fde3d4ea66f", - "seed": "90cddcab50c98a6ac0aaccfbf9290de7d2b0683b349eeb1c1abe5397efa30d82c8cdf46969c598c960e2661a308250ef", - "stateHash": "a8f167d6d796651a1f10a17749fda6f3d075e9c050ef487ecafdf5f908fe47e8", - "timestamp": 1716905932, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d5685929c1eb1f5ae870fd99601ef9045f1ace736b25951c4d894fde3d4ea66f", - "height": 1365360, - "prevBlockHash": "040349548d88536bb635b834b33f0e097187994289ded170a4641ec0e6878929", - "seed": "870634f853dd7ffac1c63da92e3d50ffd07af9c7121f4fb094ae6a7bdee1e52cb673baf4b772f5029c5aca64f0a8d7f9", - "stateHash": "cfac9d2a6e356fbb1670640fd8f84a1adfdd304662de68540284887f452941e2", - "timestamp": 1716905927, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "040349548d88536bb635b834b33f0e097187994289ded170a4641ec0e6878929", - "height": 1365359, - "prevBlockHash": "8cbf64431537a03c3ec65c6522491e31c597a05928d64c059a08bb530cf2d3cd", - "seed": "ac511487ab7c2de701b7f988747097f4db1e283419fde48a04b8dd9a1a95501823cf74aaf091a28225e591b5b707b5b8", - "stateHash": "0cc273081ddc60fa132b6cb60e018c7e56a6bf87636167bd43bbbc201d72e87a", - "timestamp": 1716905916, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "8cbf64431537a03c3ec65c6522491e31c597a05928d64c059a08bb530cf2d3cd", - "height": 1365358, - "prevBlockHash": "656778b2594946a928cf3be54ed5c698c09d56f573630ac5a2c99c22652f2c06", - "seed": "815e43c3ee80e552b3f965e4925ec6d6e6bf0d3544b69c9e8132ed0b4e6dc9ebd263f6a3614b70d4b475b9d2cdd1e41e", - "stateHash": "1db2e6af56287cae11a8a817ade5226445433fb046b91120e25fe88283099b07", - "timestamp": 1716905904, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "656778b2594946a928cf3be54ed5c698c09d56f573630ac5a2c99c22652f2c06", - "height": 1365357, - "prevBlockHash": "3939c0d2cf106eaaa885a1e4c8cffc7b3055096334000c005910faa330868881", - "seed": "806a43d70e4b09ca11df1a2f2b62257b4c9bf186234b07130877bfd600c57996ecdbc74c77dcaab1eb8c5c3438f5a841", - "stateHash": "646f6397da102fa9f1be654e17b3c1fcc089aeea19be92c53b6eae7423feef7d", - "timestamp": 1716905901, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "3939c0d2cf106eaaa885a1e4c8cffc7b3055096334000c005910faa330868881", - "height": 1365356, - "prevBlockHash": "c519b89a26d2357e02178ea2b8be55caec27f6f645afb6e3a5fbfaa42570a543", - "seed": "8906927e2ce0fd3d413f2ae33981d739604610a8f05fbc0dfd696b45de07d9e99fecd848da66ae92dabde9de7c730342", - "stateHash": "4d9dffe2fe9a0387cee8079a58d6c24d871823914a84056a7add2fd6c7b08b67", - "timestamp": 1716905898, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c519b89a26d2357e02178ea2b8be55caec27f6f645afb6e3a5fbfaa42570a543", - "height": 1365355, - "prevBlockHash": "2d6aba53063e2771f5a36565b9712514a1a083b97cf2ca8cffcb5b5cc0349a73", - "seed": "b6b7cc8df19de07d19c37080acd9ce3ac860aa41b592fd0e098c2096bb94e5cfdd5fc44618018801da2252f945f2a552", - "stateHash": "940a92e45199640ff4e36d683a569fb05baba3919f15beed0c61cd255d8aa341", - "timestamp": 1716905895, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - } - ] -} diff --git a/explorer/src/lib/mock-data/gql-chain-info.d.ts b/explorer/src/lib/mock-data/gql-chain-info.d.ts deleted file mode 100644 index c2d5a9639b..0000000000 --- a/explorer/src/lib/mock-data/gql-chain-info.d.ts +++ /dev/null @@ -1,60 +0,0 @@ -type GQLBlock = { - fees: number; - gasSpent: number; - header: { - gasLimit: number; - hash: string; - height: number; - nextBlockHash?: string; - prevBlockHash: string; - seed: string; - stateHash: string; - timestamp: number; - }; - reward: number; - transactions: GQLTransaction[]; -}; - -type GQLCallData = { - contractId: string; - fnName: string; -}; - -type GQLChainInfo = { - blocks: GQLBlock[]; - transactions: GQLTransaction[]; -}; - -type GQLSearchResult = { - block?: { - header: { - hash: string; - }; - } | null; - tx?: { - id: string; - } | null; - account?: { - id: string; - } | null; -}; - -type GQLTransaction = { - blockHash: string; - blockHeight: number; - blockTimestamp: number; - err: string | null; - gasSpent: number; - id: string; - tx: { - blobHashes: string[] | null; - callData: GQLCallData | null; - gasLimit: number; - gasPrice: number; - id: string; - isDeploy: boolean; - memo: string; - txType: string; - json?: string; - }; -}; diff --git a/explorer/src/lib/mock-data/gql-latest-chain-info.json b/explorer/src/lib/mock-data/gql-latest-chain-info.json deleted file mode 100644 index b6b712fe2f..0000000000 --- a/explorer/src/lib/mock-data/gql-latest-chain-info.json +++ /dev/null @@ -1,516 +0,0 @@ -{ - "blocks": [ - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "dc4ac511e5f6679d26512e0786047b6f251e64603ea4f037f1fdd1ea5d524459", - "height": 1378753, - "prevBlockHash": "d01be62e92ac5918234851543a6508220345f4f631798086ec1f3a251386b8d8", - "seed": "b19b2a53ebadae5f890b59fa0b934c127a6ec316d1af0f2f33ccd8d95a0ede8c2317b6a8cf3df40210c332eafd6e436d", - "stateHash": "82f0636243cff35deeed1096e21c06953a507fd55ee31dfda073dade64d28a2b", - "timestamp": 1716967342, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "d01be62e92ac5918234851543a6508220345f4f631798086ec1f3a251386b8d8", - "height": 1378752, - "prevBlockHash": "5b1180bc706fda90671e00a0a7eb52aad227f33cc9f4377f8c8e7394b9ff4495", - "seed": "80b0c07bd38640f55ffe837e568168a0e57c8456f7452a5cdd9af41c950c1f04189087fbc022a5456580465d3848543e", - "stateHash": "147fb8162b394264c193218c2470192ec380a36091da56dac3adb0673bd04560", - "timestamp": 1716967339, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "5b1180bc706fda90671e00a0a7eb52aad227f33cc9f4377f8c8e7394b9ff4495", - "height": 1378751, - "prevBlockHash": "e71cf924be5c901cb0d3e8172ab2729082d152dc1856562e4846843435d3a78c", - "seed": "8f289e0f702ad8a889424a625df54207a1db91e70849b8893d36e0a8525cbc0364c2971618a01c7e5a2e7683ef0944c8", - "stateHash": "c807d1ba015ffab1fb7a1c95f99f01b87abea5bf998674dec6384c3a92c2d837", - "timestamp": 1716967336, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "e71cf924be5c901cb0d3e8172ab2729082d152dc1856562e4846843435d3a78c", - "height": 1378750, - "prevBlockHash": "618889eb6d244cae4ca6bd9aeec7ef056482e726eb59e81c36a07768382d5b40", - "seed": "addafadd32eee514c3575356cca29203ca20f57c0cf87026d68358470578cddaa1807f5f7b5c5152f2569f2c0f027b43", - "stateHash": "72e2398d313c138f97807008c4c9dbe2968dbec312e7b17552d18dbb52d89d83", - "timestamp": 1716967333, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "618889eb6d244cae4ca6bd9aeec7ef056482e726eb59e81c36a07768382d5b40", - "height": 1378749, - "prevBlockHash": "1273d2eb6de3847cc38c51c5e7aea13664947b3123a1b2bca34f781e57f35b65", - "seed": "a63d11f86bea1498810af6c6558c478c5e420b3c596c01f2372484edffe4e8183111f8acec295727bdfe58b193f07e00", - "stateHash": "aa3ac221102fe70269c43608c18d7ad5e0b294558722b266e96545e663f56d27", - "timestamp": 1716967330, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "1273d2eb6de3847cc38c51c5e7aea13664947b3123a1b2bca34f781e57f35b65", - "height": 1378748, - "prevBlockHash": "b769d25325e1e3e5f0b695c8a7bc540ef0f2fe8093229c4fe94afea0b55ba4dd", - "seed": "a519ae83bb122030039fd56adcff5e8bbf60ebcf66b909f6a0eaf18b60f2ed156d92503fa8b9f2458a2c844f71cd5197", - "stateHash": "305ddecf8b5201d599d0c3f3ddc45d21b3188c234a00fbb4b01931cdaac92a56", - "timestamp": 1716967322, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "b769d25325e1e3e5f0b695c8a7bc540ef0f2fe8093229c4fe94afea0b55ba4dd", - "height": 1378747, - "prevBlockHash": "43e390da70e7a87c4b7b8fa09c1017c315e8f9176153304c17195c879c71beb6", - "seed": "94cd0b9ef0a0a213d8a9287669875a58e8830072696c64db2ab9b53a3e5d0dbcd72ff90915a17a9192b1f0ce9aac9d1e", - "stateHash": "d7fa54c37c762ab2b9e3da1baab986fcc295cdf6836db3c753b3ac1d29be2b85", - "timestamp": 1716967309, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "43e390da70e7a87c4b7b8fa09c1017c315e8f9176153304c17195c879c71beb6", - "height": 1378746, - "prevBlockHash": "96e2f5f2b7fc0bdd63c665223404d8cdccc34c875ab170b2d71ca1ddfb0f838d", - "seed": "8ee9bc3324cb295639a98381c9ff5c8cd567d023a520098d39b365a66a0d04846f626179568bef4b5c9226faa538a37a", - "stateHash": "1e0afa8d89c7ea3a9332bf873ff1211f7a0ec74e9219c81041048c590ef54cb3", - "timestamp": 1716967305, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "96e2f5f2b7fc0bdd63c665223404d8cdccc34c875ab170b2d71ca1ddfb0f838d", - "height": 1378745, - "prevBlockHash": "02b22e52c519c4b710d7d9fbb19b66bd41c093ad3ede7e35e2a71850618f2eeb", - "seed": "a4e0bd977d29e32352ba596f179865d59f689d46034f25fa50bdee9a57e3e34389bfead2ea04381356e81a529a4eceec", - "stateHash": "023bb7fd04abc70d0fcb1dd2e8c5dad39be57414d509ddebbf888eacf09440f4", - "timestamp": 1716967302, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "02b22e52c519c4b710d7d9fbb19b66bd41c093ad3ede7e35e2a71850618f2eeb", - "height": 1378744, - "prevBlockHash": "35b0091069ca46af8d84dfd3c8a4f54b6f6c4a8e5322be074cdd0e6ae59e98c3", - "seed": "8f211d7701ef12e56ee7bb1e0a72e8e9d883a6de21ea08f970ca852bba67c41c62fd7b80db946428e19f3018b6dadd7c", - "stateHash": "e6242db453a7208c58f3bead4d1c83c0799a6963addf5db216387071da9c0b72", - "timestamp": 1716967298, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "35b0091069ca46af8d84dfd3c8a4f54b6f6c4a8e5322be074cdd0e6ae59e98c3", - "height": 1378743, - "prevBlockHash": "2fedbac54c72690572584207118062c597432c92084b2996dac623e1c3edc073", - "seed": "b11085665109d863be4fd0abef6e8994fa5f5438aa3cc422fac5319f1045cfe19ae5a39e3765cb0331183ef61852fa5b", - "stateHash": "8ac96fa46860f54e115585926dd0b82f61fac13fd8f688970141d6100b503300", - "timestamp": 1716967295, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "2fedbac54c72690572584207118062c597432c92084b2996dac623e1c3edc073", - "height": 1378742, - "prevBlockHash": "0d7fcdffceb29079c330b141af0523995c6abf48cfaee8eb014a323b6ddc571a", - "seed": "845121321a701d6a57b6e9357616117ba825a9c1ddd08dec121041b146e5fa392feab6b0d0c288d19ff336b45bdc404c", - "stateHash": "8982cf8c0183814a10441438229dab3601b014ebf39e7c380b3a79a246550ff0", - "timestamp": 1716967292, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "0d7fcdffceb29079c330b141af0523995c6abf48cfaee8eb014a323b6ddc571a", - "height": 1378741, - "prevBlockHash": "392b1279a149b39a9ffd974e328d00a25948e8b1c9f47f05af4b0d427a4a8fd9", - "seed": "818b6c0b573aee016d8fa6820f10e5a208dcf7de5d2a5341d1c79b16abc2b1b11f83951b6b1eb2707c9cfbe11bc96ccc", - "stateHash": "bb632f02b4b029ef7b059c1e24606ca40ffc8a177e01b2c5a0ebb2f3866b4cf0", - "timestamp": 1716967288, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "392b1279a149b39a9ffd974e328d00a25948e8b1c9f47f05af4b0d427a4a8fd9", - "height": 1378740, - "prevBlockHash": "c5fac8e025a39dd2b6557654a5c561fddfe61f75ef1b55d052362a9c57301d1c", - "seed": "9697ed99725ea9c0a8eceec5ef3d08ca7d3a446ff28376cd21095c7133c737b0ef12f257be56b7385d49884c4d142df4", - "stateHash": "45270d67c0b2679b887fa17dc3995a8f410f88b2a2a58a39aa4c7ea672bcd6e7", - "timestamp": 1716967285, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - }, - { - "fees": 0, - "gasSpent": 0, - "header": { - "gasLimit": 5000000000, - "hash": "c5fac8e025a39dd2b6557654a5c561fddfe61f75ef1b55d052362a9c57301d1c", - "height": 1378739, - "prevBlockHash": "f7c1ca01425b8472211d8d1e32b3a125d8eed3d66145fc87515dc86c5cdc46ee", - "seed": "b7811de0fa434c5712f36a0f44d6219a125ce6f56b42d17aa09b73175e3e8f62428cc7ffed96172b190e8f3c323a0fe6", - "stateHash": "fa7b9c849474d1ec10c3514d2b090db30633e488253a54fec14ba370cee37655", - "timestamp": 1716967281, - "version": 0 - }, - "reward": 16000000000, - "transactions": [] - } - ], - "transactions": [ - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221117, - "id": "4a4593a447ae768a20a28c534afd815f1f72965a7442eff71e62833047514552", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "64cbef4738ccd709451ca5558b15ca3202b6d8147df6777debc4f6a8a4bc7d03", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221117, - "id": "47ae464b9cf13bbf6e7307ecd0cc1a978094d7571bc6698c9bc5fe3e5facba66", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1f6d99ea97565460469c6802b39af9bf0f94f457e97a3fc3eb41546d29b86804", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8220846, - "id": "225dae3745d75fa7bbae7e0294cb9626ff01bb4de697c0be31a3fc176b36ea41", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "3ee81c6375f1ab41272e4c9f8dfb7950483c3bbfadf44658df735a18bde67c04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221266, - "id": "03bae6e2e96709ebf41da7ca72353efca792723355332f467c0f32b3849de702", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "3a75b42910a41d1f9a2639b09d95467fc076709a2f1553d6294ae15d6944e60e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 215552, - "id": "070280c69500df7d1b40942981a3b599ccf9f71ba62f96d63e322994efca2a0e", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "070280c69500df7d1b40942981a3b599ccf9f71ba62f96d63e322994efca2a0e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "6971e17e1603d0651b4145ce404f9c7eeaa72182d94ef8856da980d38530d800", - "blockHeight": 1377411, - "blockTimestamp": 1716961328, - "err": null, - "gasSpent": 215617, - "id": "534f753d5a420fddc21c84d76ff26b87cc48ea75b450c082759d155153259c00", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "534f753d5a420fddc21c84d76ff26b87cc48ea75b450c082759d155153259c00", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "c28cfe813e05902f9b0576a0bf8da50740353ce89d992ef99f7bcfbbca988fed", - "blockHeight": 1377409, - "blockTimestamp": 1716961318, - "err": null, - "gasSpent": 214413, - "id": "c6f13af20c23b8bc55d22a416a191e3a6ba47128b4d7dc3ac6fce5fc68ebb102", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "c6f13af20c23b8bc55d22a416a191e3a6ba47128b4d7dc3ac6fce5fc68ebb102", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "e4a232262cc74cf98ad6288b8b3569f5480f6abfc935e37070ec324db4b3cdec", - "blockHeight": 1377389, - "blockTimestamp": 1716961257, - "err": null, - "gasSpent": 291769, - "id": "31c7dce26a5a6ef1392f53630b8e2714981f10eaeea2685c5a37dbbf7bcb4c04", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "31c7dce26a5a6ef1392f53630b8e2714981f10eaeea2685c5a37dbbf7bcb4c04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220926, - "id": "cbac233a76cde9fdd129277e7368a2fdd99a5f390c2472e7f316151f4b53666c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "4fa6e913c083aa595530b1f6c010c7e5a58121307c991ea6782f9e9e4dd5510d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221243, - "id": "a9abf02f549d21a89390eb18f5e91eeff95c21a4c6740dc30e113f2314152b5d", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "d1a7928a435021d87ea3649bff57c8154fc7b5c6c68081a61fea5779ccdb2e04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220934, - "id": "a7171542640d6b918928927ee814c147ec2c07c5f7990fe82796520084798b6f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "004ca8683c315b9270e04d3768dfb58fb0f65d92a9469ca31a5d97cff9718b06", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220989, - "id": "a171e5d05bd1e6478a4bcc7db4afd9d2e6430e5c3f94d49ffb71934776765465", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b5a77063e45dd90b97b2c30b4cd670fbf04ae60c4b8e3ea9fd0d0b4496253a05", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221018, - "id": "8fff9d4eb4818bfd66cfaf41b01842f4fd75b0c50605e40fa8b1b1393ee0ac57", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b263d9d594439be92bb9349bd97f55a05060956419f2f4a32925639d80b06e0b", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220865, - "id": "88c5c5ebedb181bed0927f41b55835b3801d505774efca243ae084caa9175e04", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b4525cb82f5cd56fcf8ceb2eb30f647d2c3567e82abb8265dd12daf5275d7709", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221367, - "id": "65d9ef520afbe16722f3de439695d31ab3ae807d81ef8e3ebd0fe1f805833c2b", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "40fb9d20eb9e6ffb27be4914f49cdf8059e2fdcc88a7b17f9499ff516584df08", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] -} diff --git a/explorer/src/lib/mock-data/gql-search-possible-results.json b/explorer/src/lib/mock-data/gql-search-possible-results.json deleted file mode 100644 index 547ee97b0f..0000000000 --- a/explorer/src/lib/mock-data/gql-search-possible-results.json +++ /dev/null @@ -1,40 +0,0 @@ -[ - { - "block": { - "header": { - "hash": "fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63" - } - } - }, - { - "block": { - "header": { - "hash": "fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63" - } - }, - "tx": null - }, - { - "block": { - "header": { - "hash": "fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63" - } - }, - "tx": { - "id": "38a21c90324dd1ea8a3eb749a520d4f33b2304fe150eb121086fb4cf13777908" - } - }, - { - "block": null, - "tx": { - "id": "38a21c90324dd1ea8a3eb749a520d4f33b2304fe150eb121086fb4cf13777908" - } - }, - { - "block": null, - "tx": null - }, - { - "block": null - } -] diff --git a/explorer/src/lib/mock-data/gql-token-transactions.json b/explorer/src/lib/mock-data/gql-token-transactions.json deleted file mode 100644 index d599337508..0000000000 --- a/explorer/src/lib/mock-data/gql-token-transactions.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "amount": 4359, - "from": "0xf1c4230aca3ca19199d0f9665bbd9cff8", - "to": "0x189f8d571b05adc6a35ef1bb0e3b458184", - "blockhash": "103749d1e8990cdda301b2c4efd6c50735548dd2fff511d9d99c75", - "blockheight": 6670, - "date": "2025-02-04 21:15:22.373891+00:00", - "feepaid": 364, - "gaslimit": 40133828, - "gasprice": 21, - "gasspent": 8255387, - "memo": "Mock transaction", - "method": "stake", - "success": true, - "txerror": "Out of gas", - "txid": "15fb0001ed66bb0dacc02ec003de09e31a3de10e810fa8bb384175", - "txtype": "Phoenix", - "payload": "0x", - "nonce": 0 - } -] diff --git a/explorer/src/lib/mock-data/gql-transaction.json b/explorer/src/lib/mock-data/gql-transaction.json deleted file mode 100644 index 1c9ba540c7..0000000000 --- a/explorer/src/lib/mock-data/gql-transaction.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "tx": { - "blockHash": "3c6e4018cfa86723e50644e33d3990bc27fc794f6b49fbf6290e4d308e07bd2d", - "blockHeight": 487166, - "blockTimestamp": 1713249549, - "gasSpent": 290766, - "id": "4877687c2dbf154248d3ddee9ba0d81e3431f39056f82a46819da041d4ac0e04", - "err": null, - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "4877687c2dbf154248d3ddee9ba0d81e3431f39056f82a46819da041d4ac0e04", - "isDeploy": false, - "memo": "some notes about the transaction", - "txType": "Moonlight", - "json": "{\"type\":\"moonlight\",\"sender\":\"kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj\",\"receiver\":\"mHWZo9qYUhqp2SEmtWN7EuDKFwVrjgdEyzpHdfLB6R9scRAq5EkUQyLB9fBfCGt1wjxfEpFxHq9MBPVVPY3Lk3JKnQLWZzj7UYAR4mGmeGQZwCaeCS8uA63ZPKnGpjiUnj\",\"value\":9812378912731,\"nonce\":156,\"deposit\":0,\"fee\":{\"refund_address\":\"kT5BamV2Xq6JpnoCq9ux7EmYRShdg4W1sLzyGFUqicmZTqxeMWLiTGpBWNhpjiPtKqvWFFmdxVBAjts3oEnZgPfuiyTRwDdASJQjTSy7wNhHdCeKtzExREcXZsmmMRLwKbXj\",\"gas_limit\":\"2500000\",\"gas_price\":\"1\"},\"call\":null,\"is_deploy\":false,\"memo\":null}" - } - } -} diff --git a/explorer/src/lib/mock-data/gql-transactions.json b/explorer/src/lib/mock-data/gql-transactions.json deleted file mode 100644 index baf6b52837..0000000000 --- a/explorer/src/lib/mock-data/gql-transactions.json +++ /dev/null @@ -1,1914 +0,0 @@ -{ - "transactions": [ - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221117, - "id": "4a4593a447ae768a20a28c534afd815f1f72965a7442eff71e62833047514552", - "tx": { - "blobHashes": [ - "0261047715f0e937f3ab3d6bdfb1bf1894995f89f64ed19a26a1d59bb2d7b629", - "b3d5296139ba0f44912b87a19b47ea7f229131182405d9f082c5fbbeed8c121b", - "8f6bce4e1f233d6de022e3ac1ab3a262695991460e9f78eca288fd623083142f" - ], - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "070280c69500df7d1b40942981a3b599ccf9f71ba62f96d63e322994efca2a0e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221117, - "id": "47ae464b9cf13bbf6e7307ecd0cc1a978094d7571bc6698c9bc5fe3e5facba66", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "534f753d5a420fddc21c84d76ff26b87cc48ea75b450c082759d155153259c00", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8220846, - "id": "225dae3745d75fa7bbae7e0294cb9626ff01bb4de697c0be31a3fc176b36ea41", - "tx": { - "blobHashes": [ - "3656d71948baff2091090423f3b07701223b00d1a10942e44afe644a30865423" - ], - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "c6f13af20c23b8bc55d22a416a191e3a6ba47128b4d7dc3ac6fce5fc68ebb102", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "dba739bbdad8b802beda418d341d43a419f8fa88173ef471b0780a0c48842bb6", - "blockHeight": 6156, - "blockTimestamp": 1726091725, - "err": null, - "gasSpent": 8221266, - "id": "03bae6e2e96709ebf41da7ca72353efca792723355332f467c0f32b3849de702", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "31c7dce26a5a6ef1392f53630b8e2714981f10eaeea2685c5a37dbbf7bcb4c04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220422, - "id": "ed17ab505ab991e83194183b47b0ea8cd933e096c773767153414603a2b96964", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "4fa6e913c083aa595530b1f6c010c7e5a58121307c991ea6782f9e9e4dd5510d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220926, - "id": "cbac233a76cde9fdd129277e7368a2fdd99a5f390c2472e7f316151f4b53666c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "d1a7928a435021d87ea3649bff57c8154fc7b5c6c68081a61fea5779ccdb2e04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221243, - "id": "a9abf02f549d21a89390eb18f5e91eeff95c21a4c6740dc30e113f2314152b5d", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "004ca8683c315b9270e04d3768dfb58fb0f65d92a9469ca31a5d97cff9718b06", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220934, - "id": "a7171542640d6b918928927ee814c147ec2c07c5f7990fe82796520084798b6f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b5a77063e45dd90b97b2c30b4cd670fbf04ae60c4b8e3ea9fd0d0b4496253a05", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220989, - "id": "a171e5d05bd1e6478a4bcc7db4afd9d2e6430e5c3f94d49ffb71934776765465", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b263d9d594439be92bb9349bd97f55a05060956419f2f4a32925639d80b06e0b", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221018, - "id": "8fff9d4eb4818bfd66cfaf41b01842f4fd75b0c50605e40fa8b1b1393ee0ac57", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b4525cb82f5cd56fcf8ceb2eb30f647d2c3567e82abb8265dd12daf5275d7709", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220865, - "id": "88c5c5ebedb181bed0927f41b55835b3801d505774efca243ae084caa9175e04", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "40fb9d20eb9e6ffb27be4914f49cdf8059e2fdcc88a7b17f9499ff516584df08", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8221367, - "id": "65d9ef520afbe16722f3de439695d31ab3ae807d81ef8e3ebd0fe1f805833c2b", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b5ad0ec014ac415dc8ea214f9baf555728126558afc8e142f8223504f807910b", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220508, - "id": "5d043c4a9c829891dd40c2c482c0e2b579bbe3e0ab7b2e240e47ab231d8fe112", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "56504a6d6236fbd64671d86e6f60f20fc3e1ce09f7ee9ebc13b593ba14520c00", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220823, - "id": "5c5aab71b215e835841aaf173bbfdca9372dd29018ee753d3ffd9eaa88158660", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "d65e4ebe379d0d67142e80b377b41eaa35fa7d6e9acd3e034e6d63d5026ea001", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220485, - "id": "53085322f4c84b6a9d17c36996b51a8a05d2207752c733dd454e23f6ee0ca62c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "6c0ac7828bd57ddf18834505b0cd64f7db91ed6504dd7224a3094e10b1febf06", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "7b7283644a72524eab216ea5e951477b890ce8355074f40d6c37cda17bc691ba", - "blockHeight": 6155, - "blockTimestamp": 1726091651, - "err": null, - "gasSpent": 8220989, - "id": "4d08455c8f9dc5c7bf40adec37409bcf628a0ff0f4acd2e422adccb3ca573750", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "890f5cbdabc58674e519498a92630e62700a4630e2fc66a12cab1603ec72fd0a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "2f655d46cfaa77dfebd052f2c46dbc5c11f385c2e052d21428f80bd60e93e255", - "blockHeight": 6153, - "blockTimestamp": 1726091631, - "err": null, - "gasSpent": 8220846, - "id": "e1768fb1598ffede8e36462114dc5a5bc329fa573ad23fb21f1f7938b91b0455", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "0717291342435d2d14a8dd8d0850c8bd563d9f4a86e4ccd6befe2c49ec4ca701", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "2f655d46cfaa77dfebd052f2c46dbc5c11f385c2e052d21428f80bd60e93e255", - "blockHeight": 6153, - "blockTimestamp": 1726091631, - "err": null, - "gasSpent": 8220823, - "id": "8947bdbe93c6caed2ed64d881a2b2cbd86b68df275a895ee6be4ea75cc1f4d6c", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "0cd3ddd95a915d1c0f4b09b5899921e478659047fe14e05e2ebb9ccce3fd083046fff1fc39a903062b0285abd536f54ed9d6b6a0aef63bb1e832d26692f9ae1695fb6dc79ebb62d990b58527740f8151640ed376666d12a279bcedd45b933436a527ebd2e1ac823247537b956d40bb9bd39c18d0897d86db858b9876a29c2f33aed924bedc55c31d56c205fd6d8163da7891d8d1aa9d8087c11ed3869e424a0e7099ef92169112c3f109c32200f73de854d575c37c7f48c753ee5f67a24d4a6ba241b3c701f05760c978640f089f1df1eea21cf76eb23a3fb575dd44700db65476a17d2685f580d72ac6a687b68e784404ad96745dc694186374fd48e071c9460b9fa233004a12825e2a2576289670a8ed214f838995a782773eb069e3b39b4c9e8506c1603418d1952655729fb8deec87e57da3f2de10047dc8295464dd0021557b1b8bec5ba05654af6961ba5e1a21fa29141c5d79ff224ff7f5279d152c1ea4c0791f14b265ef4424333fb487e1c414efbf653dfd7b198c69389f7b7f7105525fb3d5b980f7da92efb551e679d90ebbdc2801a06161da1a8b84a681371703dc6d02e36020802d67533d739dfb6e26fdbe9be67ed21afce7832bef6c289a16230fb77e6a1f47b396f6b38cf02e9c4c20ce621ab1c5056e7fcb442662d6e366ad824af0c11af9f7cd61b7b9bc9df70f294b72473845879e87d35eca5c89d1e7572656fbf8010c4b053fbcd32e473875c01e9146a026aae14f8043611282ee160000000000000000930e34b2a542757c9c84c343cbc7f9636f507e0f84d0053a8847580c277f3c6ab0d1e8e9bb3fd39b451f442ab38d7b078a6858ef89623c7c15babe8cda0252decd7c0b2850ca9975d33797e986a00f134992ba7078e1a3d06191bf18028ac30c0000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "234a268e0eb314ef65e67a01673160fca9c28c28e2e9ffa495f46b4390850505", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "2f655d46cfaa77dfebd052f2c46dbc5c11f385c2e052d21428f80bd60e93e255", - "blockHeight": 6153, - "blockTimestamp": 1726091631, - "err": null, - "gasSpent": 8220926, - "id": "201a06b316279ed6cbfef83a739372d5c57d38d7c697980636b2821cbfbf9900", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "624741da1d1e3720799a634e4486e469fb0ac422dd90b969f19c2692a83d2a584245990d82893cb13f6e545e96c2fe7a62021ee54b81c524a85a22427529e4385fb07b64417ae14891d82670bd001d88d59bf20928450287ff49d68300738f137f82e4bb579b792da9ffa3b87e28bb0ee51507658adc19bbf43fa069f972796475e277da83a8438aed17a92ecca578c2f6e93e0830281ff76dbe3489fc9fcd45d65381de33a2cc7e882c9cf2d3a5ae2d18f573c94382c8c159485375d8c187314c67e7d403c78612b5c656f24f525ded052e2744a0500e0b6b68969b880a026e05e048b6e141c4bfebed300d7758fd86f80941223ca9ad4e8887ff9fd83ebd42bdfac1bb7990d5badace23c411c2e5b59ddbcba2d6396d6c246236f3b36bb8317566a1170115317b9f46f7ca91167f5bea0a629a5752e23148873ea49bf8fe68771ffa5b23c1616866905f6315afe7d25c2b8930e10840e60c297871e5daf367c42e4cba6923c571f90a34a41237a77d75745783c0a5147f2293b118eee18b1cbaca6d36acb76724d36b7536dd20be0c3a9560109bebeb7a14c197a9cbeec23f3f61644d0815c7d7ea7cb5d6704829bc6605e0ec3b7590bb96bdbba4b104b00c39656a450005b82dd314a0da9d7d95a451d6ab952f21e378f2a50d915cc21312323968f213236744f7855d84d35f3f1352de3e13857e779a315f2bf4c9d6f87d3e0443c03298bb3e30ada75b50da44f778df7385a7afa01d1357ba998dd3880b0000000000000000e12b4a93977610370958987db36e34aa74e5474308d9a8f34dbc62c725a879bc8b2a9dbe9481d147ea83bcce9132ea0eab5b3c92925aa75938e7e771620968bfb202f61573ca5b90c61cde1552cc8d0dbbbd52af1d0e90b4f778cba58e52b00d0000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "34faa5407c1cfd3a0b3a9ccb256caf0f968f345136cc91f39b1e8a190d3df90c", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "2f655d46cfaa77dfebd052f2c46dbc5c11f385c2e052d21428f80bd60e93e255", - "blockHeight": 6153, - "blockTimestamp": 1726091631, - "err": null, - "gasSpent": 8221266, - "id": "04c2fb2642f5da656d51594077a70f1beae51bf4a8771b4d22d0d310cf600d55", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "8aa90cb611f89eb2b676fd40eb8b61be1845a39b8b83358b3d9cc5937542bcb782b550c7157dee861e33606b6c8561c5a452073af0f1e337d193e520366dafba0293f967931c35770bfa0e29aa2679acf3d8953e55df64dce8c439fc2c8f372ea5571c17481fde22f290f7c9c2998aa1b8709bc0c362069c465d2180f53d0c2f7635741cfc5535c4937e756fff623c54b3761f23d888e14b3659c3b76af7e5d36842bfaeee3d88b2cd2df8fd822156cb3fabf802a8db4a1317bbf84d9548017a8b0552f2b2554fb6d2674a5ff7a0d8ced655daaa10b8d85dcc84c30b275682208cfb551b868576e9bcaa9d05569dfba6a6d9bae314e27796607eb16936e98b5bd4e9dbb1f3db02afa0c7c53df58a5d0afcdf8b6072afb95b055423cdda744902a9181115bce6f8954ea9862d78a7cadbb0b420c60f6f65fc47b879d117a0b6394f0c66a706c6f07282b71b8f88492bf4850c098a4496648f5bf1e4f76a77637d79cd4e77b7692283fad15baccbdb2f432279bba3483f22b277685441da82ad8d8d9e9bd803d4c543490dcda81075676e7b9eb9dadae8d82e1fc7b62c3fb09299a8a898dc5321a135afa769698dbcc5bca2e5b325c6ff3838bcdd9a48e16250f59164d36bb23ce4b1418d7895bd50358f46e725fd0d5e6ffd064117ef56a80809ae6f5847b8dc9b41aa3956226a584a963509a705a0048af59f4b1f6e72e0ef32e24f779e20a89d4a2fd3c6fd738e233de559afb741d42fe13bf63edc0b42eea47c739df5d037489bc8abdecdac949c453a847539d8b7101cc71423952d343f0bfdf06e0684c733966778c9a165df433c7a4c02a6344d02c343b0839f4c54d190975e6fc04e3488ac8d6111563e233948fca64b0b0984636b8dd8d86bfe03e65e0eb7e316fd0cf231be01faf175cb34069dc635087b78c0fd4a1f5ea8db11c4218cb0d2b6943b0f40fdac089b5878d859c00e15f04c95ae50e0c8334684e17a457b74822ba4aa21902624564d9dcad139fa381b115968e2718cb76238b2d00192e8be117131dbd662106cf95c5e0c02290a98d775c1d8cb52ab0fb3a373dfafbdee954a5f7872b7aeedbd1b753dff563c04d845f8eee8df6ce39f8b13f9a8f3c03641b5fbc1f48621e587aaf8c8ff0513813a1dba448b141df5f4be916d7666b972a6b37af78be7c14934834eb93e9a2f63a4b95165a6976ca175831588c75a4b6e5d44dc2038e70bea45f722bfaf1b0017b44baaf7c74b87f6599ba6e7b69eb5738ae2751eb4673837532625d013e9231b4ff8ccafaa03d0d0d92f66527f62c30c453bff01b242b40e2a001720c7460769885a9fe6567a4cd033a378cb2a80e42954849e52a2d74ffe1a4e5c4545b54bacd485236ad90ce612123e5a462f3f3d7212922d5646c8ae0ca5ca963e64da12363606f66c7fd786ba1d44f4e2c182fdb02c41a19770c896515610a35a629d38cc7b7dc17389bc60046066c1da3ffac955f868aa4599af12695066456bb252b91bb91691d4560156dc7996f40847070dbc599ca4319de4e8c6c3bce23c533081263740d0141d9260dcd729e720d374278f03e76d2cf3c12801877cf10eec6a0ad9440ecb7f822132a2a0714179eb7c43cf7e04d50434f26681b9c704fd5a15a782f463ca1f676e3ce094a0b7b090630352c8d28d2fd772e168c9271671a611183b729fcfc05ad23a2fcca90433acb048bb8fe8e01a0d2066fa10f0728187ad040000000000000000807007cbb4a56bbd5827f33a6318b1485a7c9e8a719d0f8e4df270ce46bc7d034fd3993fac5754514970637616f1a700070a1fe1685dd19c3cc5fa3433237d3d35163deeae528fa122e5e4d2a9a1bb039cee6ca48946c219b18bc739887dc40100000000000000005b56516f53400000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "4e6c4cb0cb90c229440e5879ab124ad1686236b7e5f672dadf20616e8a2ba70f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8221117, - "id": "ec5936d93ef5303dc011b2acba2cabc0ce85218b274eecb06f75f5625e9b0324", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "9c93999735f48a9e64fc5271d490520a4116b3cd3f6ae6ae716795b0a58add04249d0166317b03609cdfd39b74c4dc70d1787887497ac1b7b7fd467c18461971124134d8e5f28cf281e843f1b665ed544051d56494f3aaf373a491ad5edbb74d970d0984bd3abfca9d7564fb1d7efed47a6d5cef296b76d575756a33a28287636a2d57fb5457c4ec327f10810c8da68fbee5180fdc9ddc7ce434be2fc9ff840e8a71b7608e0da343475dd17d4ba38bb273da7e2ca100d9dba36f87710893e806e59e615ca11220b66dd354a3f7be5ff458227d626a0a25a55fdf76c28c755b20d186d8cfdf6ed59b3cda39e39a8a7b6fa0218fdbc8eb13f9042580a615e4ef5f4ccdb07d148a724ca9d8380eabef71eecee07acc60b166398d4a020df25d3443e26139964e34706aa71060b44f9e7e09b25c66ca4fb895de4bb6c0bcf1b31557e1d3b89aecafc01f415b704d6256359c0fa6806861ff4b48767763dd93274f28bea81d89926af3756922c3f7cd8d328ffcb06efb5316d5d653fe0f112b43ad56e8ae8e91a32c4001c35733891d917f0b10028b1e6a3244611694cbf10e0c463ee244a7c8e18334c5cca91d5fb96f0184bd9e98537216f71c9d28b084944d210cd577689508cc34eadff422018145a234d1be38325fc0c67036c1c06ff81257167ab4dba1d5ffd782bebecc3accc94006072de34211147aa83165052559c21093d854be274b6de129384061e49bf45ec7cc878d9bb37d73116ca863304928fe070000000000000000d609103d018f93174629fcd2d39de750b750bdcacae7c264a99999ec0a316eed9b036d749302a4a242a0bbb7cf00e711796b5404444d5d1d340e7c1d2e5b7f88b94e2fc91679c1e1cd21ed868398776ffa89adb81efe9a4ddad7052a0f4d72190000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "1a5de8a0e93eaeddf80e3d698ff57f2fd4c965bbc1dbbf4938a725041cdbde04", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220485, - "id": "d897b5d2c0d5c6008a1e932a4f14743e2dee41c74264ccb70fcde47627a5373d", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "00450e0e9402f7d558d8c32aa2d50fda5aa5a30242dd4926b5703114bb5ab46db9c9f5fc4fac002556a3da0823023fa2958bf32c5ac35ec9d227b0c156b29f5a140518062eac61ab6ad1674ed390cb8424d82dde9a500b4b48d4da5f295182e3b7c28c4e444d8b707771816053ad54b02b8196b4bba85eeebe76e7f1cefafb68c0ffffffffffffffff188e532c993f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090dfc0d4e78f168b4dc2c524232a91925d394b4b386a0724adc1eaa257d6c16198679c2d93be519122a09f87fea0b2b0a9d6471dcb7d7981bb15fb3fb8624a1ba8624c8ac9ee988b63d172376644195232537a830801a74251aad0e76162480580eef87d687be71a697dff3c572c12ee6b8ba30c3a5afe7d526a2538c823328a16a99af524f9d7fd46668ce9733cd866ade61f347f1ff26b69ba83eb972100bd2ad5b2753b746a10bdec89858f18764200c5524426bfb63e55b17b61fee81ae28677545d343a2000df02c0b7ebf5323b689bf034fa3948eb22dd399101ef4f2b69eff26fd6adda9c7043b3c46cd559a98a571d05bc513e59ebe37a1172146a245845e921cbb60e3b4518edb02ea70fc2276bc2197e4aeca95984c71cdafaac5d8889c9cee46d44932b497fb072cbcb65c468e0a943c7867beb20abc42ac19b0dffde32bacda5ea2bdfbc06ed2690ee0fb78ea4fee6b63bc7c970d0ed46bd408397d82f51ea7a26964e79d81fd082707e39c501b7232fd762503d2057724a705f952bd6e2c5c8ca86c3c310d829519723cc2bba2f01298778074b8401ce6990410bdcbb5d1be01257b1d34beba0c7401c8eaae89fbc8c91bdb04988ab0e2910071ca31cda397de1d7e087959e9bf1aa5cd1ab825f84f963009bf0f59a860f88a291dd8d3b661bcdd164fd5a96fc0eaeee10810e3ad5ae946c664adf2d8dc45f152318758256368bca5d4200ce9969993506b48c42ee7ce005824ca63395e1577abbb89a12068fbb1f593bd049f41aeb0bfc9e19cb7d53de0b894320aaca8cb6086367671d44099dd1859220753db368229cd14736f6bdf27c35152f4b4d5c9cdacb23ab32fc03b8d28cd56b6800aa10567deff2f7bddc38cf2b5cb430954ec9f689379d62ba67cdb1a0bf6e9004cd2c41d180c1f99e0df70acb7c2f6aee736249ea10736434d84012029849b4fb2c8044a155a7d971547160b835cfaa4999b668c2967a1820ad84617835689e63bdb4158423cb782a952d3fec476d6056cfee8d46bcb83c9dec9626294a48095d46ed6c9e77cfa35d88ceb0d90b3326b575ae4918f1c23050fdf88b80f9277b71476e4234678c355cf253d348f29debff5a0bf01c721333445057ecb71eba6a77964d57bfee062888c3ef7bdfb0f0fd60e12edea612d7b117cfc1e9e22b3a4af5905b46f0cf7d3ed19c70f456e5c6e502988ed7a2c5a1adf8f9fb1103f857f80728155d108d6c40e61a6ee86c3d99300345210d84c5cd41c7dd245b8d7fbe9855883f43fdf2da50595c0c4f10d0d80f3103b74ac35896cf2705d2a7ea374807e6e5a4450b29574f2b1fe2509a8ab1d0ef7e1f5b21a45162d3c0c798a1ccfac83e7c123f16e45fc06e98b695781a038d50e8d8747750e20aab27d97a8a69b9ab368ac939534bca34b7267933a70084153004d8c47a88f177c40804f165d8d85414fec36a00000000000000cc7b7dc17389bc60046066c1da3ffac955f868aa4599af12695066456bb252b91bb91691d4560156dc7996f40847070dbc599ca4319de4e8c6c3bce23c533081263740d0141d9260dcd729e720d374278f03e76d2cf3c12801877cf10eec6a0ad9440ecb7f822132a2a0714179eb7c43cf7e04d50434f26681b9c704fd5a15a782f463ca1f676e3ce094a0b7b090630352c8d28d2fd772e168c9271671a611183b729fcfc05ad23a2fcca90433acb048bb8fe8e01a0d2066fa10f0728187ad0400000000000000007d1496adce6ed0f2b407c457fab24299afa0ec89583749636f071c7ddf31fe175c6ef675656288afc616a4180332dd08baa7c4ed5cc2dc69c509c18216e4234d1d5eb20a7404aad53cc244bacf9e84cea054b7f58ed1ea265ce9ace5fd1a190b0000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "92774d896580133f4de508b81fb736136d0f1a056c688990b122ceb80dcf4e03", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220989, - "id": "cc28038743cc0d3f0bf0b1ac880a4800a0416eef2520cd21fd1932703bd86a6e", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "82a6651bc1f16eeda28c215bc72411a940106e865c14e8508e76d31ccb0a7c00", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8221018, - "id": "942a2f76dfd8f8338b07417c82fbe8701a7bf10cee9861548d892b591a20fd50", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "58e35acd24d88abbf2ac35c4f1feec8e93305e276557ded69a66a01cc2ea960d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220508, - "id": "59cb3ccce410128aafb02626fc48dad9300944c754def2bdb7fbe38280089851", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "5da77ac9cc3c347234c2a8914ae848e224da17c3f3f1fcf0556d04fe8027d40e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8221243, - "id": "4f14d1aa4c095ccbedc21a31608512fd3d4f3d05d48c47b4e97ca99f577e9f40", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "99fbbdf1ccd60008c3d3c46ba4b836c63f815931d58c0d9825e86313e315100e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8221367, - "id": "4b7d1622ea9408452f041143e90f1a8a78ac106c6a64bb2243fccedd2873e05b", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "911cadef7943c9b9504b5d85a995ef64c53ee7464851d31d8d1f2e7a081dc509", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220422, - "id": "3d599cae691673a78bc062a59101c43b131ec528f9237df053b2353aa4617b35", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "a58abbae06f7d99b1f073083d514575ff465fdc4be7aea802e14f9afa7767309", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220934, - "id": "233cd9f74f126ac8c22611b00de173f5ab384a6dd37709f9985800d64f993b43", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "863509ffd3bc8af84533c3011d935773abd6d249848310e54c8425cf64e69e1cc8a625024c4ddb5a89d870f822da13f88e43cb63131d87c9807b35589e58d67ee04b871664344acef377aa25a87154e24b876e3dee94d7297b6f2a896a3d86b3a9f09f25e65d28f247606e18a9aafabdf124dad1b58c43571da604a5224d863096e5cb6c6c5f80e5742094019d886f45a535fcac0cfd6c4773ff87b144025b3512baf9ec6ffd778cd6c0ed9fae62552c80a1898b0262b5ce6044b03b6064ace38175d18717dfe8e8a3b4e7d85b5ccd4bb06a76311c961390418e12dfd468e31db69d3a5db88867c629688933df4b06e5b2532fcadc326278d4296059ad05ac2b6286ecc804c86b7c5802c477de3f9edf62001cf738bde0e6c59d7f0eafb05b6c98fc24b0d248c92556a30389b66d176df20f4ee8ddad5f4273f81cb9642219ba3454c4eec46edd0f7ca25584624ef9c48cf07c17706c141bc012ef568579b50705fa6ee1215fd8f3b1d2106e61a88feb19a6e2cdf6140f6ad68746cfe2c5187291163af91ca5ef3c96f7d4dfe8b86ea47281f0e33ccc258081bc08d16fe1b98b038752671c4b09bda1cd5ad55e8823dca4a677760e306f9c2078d288d27db9acdbafd2a22ab9591b206c37d785ce362e50d86f3e448404ccb3a1108d242336c0af5b34342960194a7d2c6a827af6866295bba58d3123d772af3474dfc06345e6c6c916ea1e2f4bef9bf2a976d1143f30a369e47a63460d01b56119c09159b44e1d538b715087be03cd0a75d83e1a532c2808169be204d781ab20b2850942061ba272230e1215e80c26edc3d0cbb0d3264c040ee492018bb928870f4dcaa39f66e461df8e65871759f833e32d97c80e50d5101819ab118c54aed4aabe14fcaab7b830a63ecfe9646504cc694627e4f107461fc889938773988d14c0a8a99867c05db6db3821cf8dcc88c28cbdb3c4e93d222b33ad088f74334c975a0ec028bb871b34eaffda91334f38157fac9af7624c0ccb3793a19a87f0493a2fb3941d6eea5e0c764c64f57a9c0dc92eac258882262547620f79c23dce0f8c7273edf73a896844eb4a0496c239d41fc699962b514a771511c389fbbbed3873c1975c53acc87832f8ea9b4a2113123f13671f8fbb3fb8a262f0147a1482db01092a43f279811df24d23c6c553bf312f5a1565b07172cc84057ebb14831b5404139b57a359a175312c8bdd28f14acea919fe5565d304106435ad944b9a8a6cabe7b538089df57dc886bb0358c54c8d65e32f0915093d2be55e625e70bef1b263ef091183e6ff7d971099223ea75ed23e830fd9f4eb730defad897918e91eaa3dd010f606af2695cdd3ef287e6c0b35dd44c098864b059c1f27824fb8fdc21ac3340077aeb49d41d8bca28a3b941372c4fe95a3c73b0f40cca1446774e322a4bf150ef47c7640c277d7caa4e74035f3e8c419245aea61aadfa0583e3a547ba0c66d67d85b6458eb5b6c13aa288f5d52bc009e72aa4be11c0cb0c9a0a51c15863cadeb9d8d2400bc5ee2a2f5a89fe86d20ea14646e477a9176bc1b28e6fd4a56b00abd0b7f3b03b31b80182669d9512e28e2d64de3950b98bb3a33841856b27197785eae5d06114b6454406c536bfa6e80ce3aba975f93cc7cf4010ccba00a299f19d3fe9a710000ea7e5430e82c36e215b0d629db551269c0c1e92ad034a48b45c19059c259f2dfc5398e94123b56cf88b84d008da303000000000000000026e51e62f8664262e4db4e0095d767a3558653c0497ac2beacd3b8f46f1936fe49a6ba0150187a13a703001fa2c9ed14668ab9e5a4399e982c8b8d0e3dce8b7408da4c7a35a9137c197bcc60c27dc2850ed150729961c6440c112af3837ac81500000000000000006d54e359bf300000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "9467c2b0bb71afa96a9fb844bc300d14325ff4fe7c3c1e7d21196f9962f63601", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220865, - "id": "22792f9abbd8de6f01f93367e735f62e17e49438f87dcbd3a87d1e6a90c72d39", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "90409c4c8b1bc07b68724b012a6828fae6b94551608fff4eb6057e452e1fe765c0a15a5970798390593004d27069a486aa42e7e52ddf008be66ef0e71eb2153438829f8b8615e12d8fa039c45b4f94cf456275d638273f199eee61f692641679b3a2c9b1a7d057b5aa66c7cb2a69b182a1ef38c2923aeff7952a4374619b384763a5b0ae20e1785f6f73946b66cc3b6a90ec3572fef35d99d1e903ffa74ca3608e4ab8fcd9750b3096caa082be4b4718f6fb0bb6944ad89aea9658d025944033b5c0291f4e924009214e88e038f8aa13c8992f2b1e79c8435f810ded98a5a8132c442644d6aed217d4e379da7305a7d98dd221f7e950d181080da86dee880c1f16d4b339dc17bf7357c007e1b43a4658cdc35b7897e15187aa6ece1e4e848ffbaef09d1f39d22ca58c65668fdd54b7b51653f93a66febf7eca7847414d4fd91db1f41bcf87465a79ed21734569f5a2a1b9819513e08bd2533818d9e2477bea2b6d8c4316755eb33a7983ffb760233f2545bcef376eafd26e440750f298186f9294e81abc89d1bf321074649a04113f922aff13f5deb16dbb9ff82d483c0128621222476f8817e7c6217a0ce3cb606846b07cee80e5c8e7c2ef9b361d6f7077a12c49eba513dbf0299a5fcb32c4d06454adc6ced592be11ac7ecac0b58bc55607a92fafb6701ac0e63be2010385cc31e94573f76699bfb2d415add6675641ed65dd4bc60a4ee91ec1c1e5aaa7f6d0cc16de8f5845c11c241c424694508a8852ebae95b239ab77a452a7c9f8bbcad82512200065d947eaa7d36a4dc6c6500e3d42307f5139e53f868f6eb9676a04aa670eddfb5e8517d93061570ae02b37cbea0b54a3bcd1e2eed2987309f141298f0d6c5b43e3abc0b325683818e71027b1c440b93fcf02713bfec674a7028503ed49149fc4f92e9b4054cf718c4d3ff3723aa24cb6a3a49fd7bb90a40dd816e21cb55b8ab5fa3a8bc17d56e2bcd3b83277c47e1dd4376f7c6df78e8fe1e2db720ece3d8c4136a06d087f0b5d1def0c020c7db2447ded42c02ad09e2742693260f670712223f620b6780233e7fcb46584e6bf6e9cd7fa357e4a8e4696e0ca8b3aecb540b158d91344610116f0f65e369b4065ad7c1579c7f2d41c57054651854890e64e72f2312880adb3f2f78b560591e24ad5560cafd6e6d2ab05c8b610cf8e62b2004b325510a8a3a8188a19aeb2bcc89fe8f51e5123fa39c9f4d2d49c8c60da9b4b9f924b91b5b1aa08ebcabac5dc85d64464bf14687e2ef7b48b556a9d17ab3f666999240063dade6662d8e31c5a1598dc98e2493977925ff29523855bbec36d69e291161aab298a0be3f469c7b37764b8f61112a0427cdd47f6d68335db326830ab8ba57257c832f64fdbe40f61cf7fc350a57a4a2df53ab695df771a55922d515e3bbb6ac74222cfb636323ccd1a5b49874282472280a9b0a76ab0852a302461940f2ebebaa1c5313a1ea662441245d9b7496384308f72eb19a6c60ca08a7583fb94e243897ba9e995f93bfe5667340fda55855b13554f559383dc84e1411e7a5bae94195ebade888c038efdae5058395bf2386ebe9bff032b5916bdc7ad380a860849fd45e1b98b9309f8127b214a2b61882643fcaf02793332897650ecafb1bcd8fd9e7db0923ecb5c6e85afe06514537cacf42816f2f5b3875dddd36853e40b3a8cba43b7aad9451db326e5f02a3694da8bdfa2ba7bd59faab5b02263531900000000000000003eaf9eb4f20dfb1500cea83fc6282c6648aa342f00be40c930c496cffdb875299cd11b7785123d32d116494fed70c316ae42fc8e0fffa4169e32504323708bbf68fc5e0f740be8dc76337d2108d5b566741ccab5cd58a316616775153aea3d180000000000000000e83fdf2a05300000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "5cfdd5d300993f080910394ffd515c376d568f9fcdb32c3b800205fe526ff800", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8220989, - "id": "1a1e73ae4789c6fcced6dca5c79e450d7f08b60d7aefd496be2c92a174683f4d", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "0023d8ce8a00661e6ed225075cf5625e763102e328171ba956c36172a9a34eb4639790dffe57c2394e5e1bfc6d0ad274bc4d23553c52063721db6ad022b735f517a17dc56024c3ff16dc442ab46e886067a5e759a1d41f698132df824f919d30e7bf5582fcf27a9be798dbc6be2ba7a0921e1688d4cc69bf1276f9c475f97d7a05ffffffffffffffffe8817fa0a72b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b55c97fb52b7addaab21f654f4b520fa08f7e25df0a23cdec127c9feef3b8b83ad748450fb4e35c99f14c6d183f17b828377303de459184555f3510bf4435032e6546a6fd8a374e46e501c4d10436469d2808ae01c76a95e2034a7697fa1020198d66a90ee8117c9ce849802b91c60f14093f119d637836a33255ae58a5e3c5eb2e7746e0fbfa67ec5706cc62e630f838a91373c7beac0733df95e86ec154d17d6de2e0c217102f0f1815690be6ef204060bb04784f385165ce34fbf7b893a6a99f6a9f82342907f27e8cffa7989b98551b6287e84100b67f2bf6f730092c9614f711d3e03f22885fc5de3e716683c6da28803e0b06ff2f3406106e23c19e37a053c306e808bd7ecd7fa758a60d2fde6e967167c174cd7d7c2aeef30d5f9ae39ac8463908e87c2caef08fd2e4be1dedba0b4bb2e65c3a18e1de8693949c4c385a5cad0324385766276ed48f253ffda5ab1dbbdd38f40dcb466b7df86a69c5914f7ee3ed0f3567ece57eabe60a247419b86e522380d5928d488a59403397b04fcacd26b8ea1344d4f691a07f77f9ba31b35c9acc0dba471fb48b2e423dd9c0f671f21054e9f4939beecb0227f113b2ea48a0176b5cd0b821a21d41ae2363f2cbb203589185d4b4d7386177c23fd884b727730b02bcf0ce9495734636876a64e8d85cd0a0c194587e78449bcba7530e0dd7a8b06be54f1a73a679f980db30e683e79f292eef404a1e96e898523dc4536e05fc296a1676aed0842fca60152c54e13454b68950669f0cef222d9f14a3e1d60eedc8fc550c91d6020fc014d2b08fee00f610c1b2b21ca8594cfd0b900bf176c620d8a6397786b83a13a24e3dc999e2f647d31db7a79d15768af88f763729c6ea165aed4a8a6326040d11ff70b459ba6110ceaac869eeac84f5a9af5ed5978184f495547ada9f08608698ec64919070c06f33278e11d484e8eda9d02ac8eee30409a74eafade2a0dddcd1e2905c35cc3c7f1035629fc763ad3de566bdb47bb1f6355f2360921e769c5efa5ae7b558bcb649109a66112d6b8b4d18fd854275f5bf9090476119be32584f545ec0c931fd193179a12f6cc841e002fc5635087b24fabc0d5643d071e1d10d9bccf03a8381bfeaa42241228019bcc01077646b1b420c59897f4eb6b66688a574a8f064ba53989a4761df5deec20e9fb2134352e17006008d84743e356d45966bf5d4321721b572c9a094322f71120dbc2801e1a0d03a8551d44112e4e4a4c2a8c7e2a6b8d7aa667959e114ea24cbc4e3acbdf6c6424740f2e6168aae888f9b214c10a5c077630980532cf91ca21e77fbdc82817302d5b14d0814b0c5bd8fd1c3cabe5fa7c3174f32a1f3ca7b4f5a15c025abc5e4f0b0c3625db6297e05458495f25b2f0ca64bebb3e756f1e24ac49fc9632bdab7a4e20e37fe1e2ac9fe0ce450f48394473d934ba94a89f4b707aaa534d09835a5c2600000000000000940f2ebebaa1c5313a1ea662441245d9b7496384308f72eb19a6c60ca08a7583fb94e243897ba9e995f93bfe5667340fda55855b13554f559383dc84e1411e7a5bae94195ebade888c038efdae5058395bf2386ebe9bff032b5916bdc7ad380a860849fd45e1b98b9309f8127b214a2b61882643fcaf02793332897650ecafb1bcd8fd9e7db0923ecb5c6e85afe06514537cacf42816f2f5b3875dddd36853e40b3a8cba43b7aad9451db326e5f02a3694da8bdfa2ba7bd59faab5b02263531900000000000000006378093b95e37d98b1509f0e7fdd4da2898a705deb62a9adf23d07ee82f0c3aed6e8970c44afce99508d45aeacd4da028110fa6f25efa350e70ae9515151c019db7f6237c733f9400e900d646a378ce7cf66853716f354589174058733cf4f090000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "a983e6c884a5a83fdb3a2f3a03d8f41d5db813ab9f0b6c41e0a9cfcd0f301b01", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d2d4531283d3e2c6c023475b49e768ca9d8ef20ae81d93fde476312ecb9246f1", - "blockHeight": 6152, - "blockTimestamp": 1726091621, - "err": null, - "gasSpent": 8221117, - "id": "0f163c2c7e9f7b77d3046f3b3b4c769dbbc33eeb4b8f0168c1aa91c2cf00a733", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "00b6ead28e20b10fccce902fc1bd26fd4f7f8edb05b1738a6a7d8c7e234a77e46c50afc5a45c5bb954faef4fd88c295ac0a5a5a840e3f60771e96095399572c85b498141ab0e223cecb77b301a7d9bbbe6707d08e5c7d31cdb5de330b21846294252e671602095731ac00ddcedc3d3dd6773b272ecae4e3c5ce0648579c581d1a0ffffffffffffffff6d9683cf612c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096400a1ddd7c2941a2ed3bbb4509cdb160cc5d94697bb1ceb7a4c2343ed074685996485d744f712b63071d40b4805f02836c7f9e67b8fe30a223f661998e4b248c98042620ea353fb750348e919e6071bb2959974638a3a66f8267c35d85d7ad85fa384f9cbccb36e26becbacc9d7501e0a12b64784b4cb433f765422420b0cb0c379ebafbe85820027396e1087e0fcd9667438002b49934e49935348f997ee13b202aa5125cc067170a59e3255936160aee049575fffe1b0ad16e5062d1d4cfa3eb5eea0439f3f908910a4db07a0c26fd287af944544114f9875775e11a98950c3d198bb00e5122726b9fe76b90e1a3853a348d860598082a070b6a074de3e1e34ac2b9ce8890de93788b007a244fbf5b78fe937d942836c018dd6b77f3bce48872d9250e8d7a21227ca8a000990a2a83fb2c6705209bf49151f68a1f860fef7637762847066b1cb2d2baca43479324ad1ebef4701196f54859bcbeed732973d904973d4bc7a6c2a4588e46790108d8fb882dea26518317a7d6b5e3254b846eb3244c2ad5c22454c059415efd52ebd65140fd70ed5b53a940a8252a93292fbfa06f7a4a9003d87f2f21a1f47df4053ba636948409c1097f0af680af8370e1c1bd35305846ecf691f250aba59507012ba566108599925dbe2ec09244781c33fe83cbc83f72b8c34f7bfaedcb19169a6b260addaad432cb8161dc008a2b334eddc87e7e994239e4abc911384dc77f3252cafb2936cb5ff47eb7ab025ef6f1ffd74fbebd575b5595f30c9b547e8a45f465c181c59250174595074e3c3c44d199b18fb3f0ee77bb27a9e44a944261a936037169e5ebf9d620ad40dae6c210e9899f02681a7b5e7e138feb0edabcb46ba704dc4903dde16e3b8b6eaba87eefbed378cac00d7bf072dcec7b4b679708b6564e063291b9ac9b0b87e2385bb3f76e4e4e7c3eb48cd86bea820174d45b79fc93182b7117147a44384f3d046af6c56c1c6c0d02cedd7545eacd0ee43279525b11545273c5c1847160d658e90160983e9a048e13684a9a6dba49f3304abf978e833d49597c5022f0bef2d496faf30759d7abe87bb989be772293cc38658868dd47481b294682f05ee0cc20961421efc5dd0425e1068a8c64afcb06d0e9372706fb591cb5f8ad846d2714059accc0ab2e069431dc27db36a1f2adbeebff1b1757ce463f1b81a68de4cd3ea25295db5c1673563fd47e73ed21ce14dd7a729a7f506314d218e9345605e614f6651616615dc40c09eb4423f263253fc93b9a760e2ade311e27184817c79b8e95449aef6a78b1c625c0d4a9f19048a384f68f3f2d0bf972a8fd3cc32517c56849de15ebbfd9ec5114b9ebe69b5f219eb7ccf207f7a8ea73627cd30430c709427756c15b9e938af01fbcbd2a0892bfa8b17f7710aa379d4c910515199bebbb0678159c5d0602e0b6d889613961af0b3f86f058734fd9c45600000000000000aadfa0583e3a547ba0c66d67d85b6458eb5b6c13aa288f5d52bc009e72aa4be11c0cb0c9a0a51c15863cadeb9d8d2400bc5ee2a2f5a89fe86d20ea14646e477a9176bc1b28e6fd4a56b00abd0b7f3b03b31b80182669d9512e28e2d64de3950b98bb3a33841856b27197785eae5d06114b6454406c536bfa6e80ce3aba975f93cc7cf4010ccba00a299f19d3fe9a710000ea7e5430e82c36e215b0d629db551269c0c1e92ad034a48b45c19059c259f2dfc5398e94123b56cf88b84d008da3030000000000000000e45b684aa663a0ffd9aa74a8fb436430e8bede5c96c615bc19b44116feab1674218f063bd40f136a3d28a09516b94a1935315946debec386d4325862a4eff62acb36d4cf983773e5c035077b5502130dafbf1a8193e4a6d94e58c986314e09100000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "0c331d315cb9121aec30b9676abebb474bd7aa962bfe624126745391fda1910b", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "ce9731214761e991f4d999dcae4707e26f9aa7f0f32a3b2997f341cb99a297c9", - "blockHeight": 6150, - "blockTimestamp": 1726091601, - "err": null, - "gasSpent": 8220926, - "id": "c1d0f7858630ad6ff62fc01f5fb2bdd3b1481e8b013a3905394314eb6466426e", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "22196ee04a1b3ef6c8d9685aa87ee89e5a6807192716b243a94b1692b40cd60f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "ce9731214761e991f4d999dcae4707e26f9aa7f0f32a3b2997f341cb99a297c9", - "blockHeight": 6150, - "blockTimestamp": 1726091601, - "err": null, - "gasSpent": 8221018, - "id": "b4b1cd90bfba8c3ca23cb8cac540799aae0ff605f1c70780a2586e1b7a414a72", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "b8c5ec2405ef16b1ff5df81038096bde11b1ded56847c1e51e1cfaa9f77643b2de9d2aba8646547e0551d23dba1a02e5aeaef0303de1a8b6b1c73e6be5bb256dea59a214ffc9b1e34d4ac8f462dcfa3168d94e57a0d6a8afc33751d3a6eb9c01ace39afe21985394391ba1774f0b02e987ec5f865427583d00891cf8083bd7740edd241d75f556d0ae06fb4c7005cdf7b2c776d2466ba13283b35c9166f62433be4b24884f5a4e1b32993640375d62f8b02bbb42bf16d2feca43696e53527c169867f095488d4cadb4bacd32630333cedc14dd3c76edf6685b3746b9c4ba01e4b6529adf048980e3a756e4ef38cacc5889adf4b524c6ad0b5d913a748c7c4915e28544ec81575b704bc0ecd901387150bc14d91f9425f070cf61a9201a7e606ea637e50abaf2995cb753aa65157b2afd92b72817b604e11b81735e4b8e610a7f1590e2e578cd81075c9f4edf9439f75cb4a0cc7e5d9a0a28951d0ccd76c71012cd7ddd672df438a60683f805b195c154cf349ca3cdd241aa38fb7d286e41c40f918e434fda944ed61677a1ddff13868d1aa7911a3119b3cee3bd7900944ed770caa8e8a2e4dfc0b80c520dd2e0fa123b82263f0cf0555fa409b0f65eeb8b17135ebc4a82b7e0e3c758e8520b5fcb2353aa6b13be76d58e9bed3e8fb620e0e6349904def3220e8b4d74822761e1018f72e2cc6fcabbe7de1b3aa257074215edbce1a5da1bc3dc4eb672340905f5c3f2902907650b4666af68ade78fa27519425835b7f80393d56180d85f87bf1ffe566844fd1a1df3283d482e99daa5bf05148ed440408dbeefcb22c8c23229e5216c72566bb9738dc47d382c355229f2ef3874f214018671047b1235e6742be0f37a33dc4f654b3abf408049ddd899667571cae060b057cc84237faa79fa14927b0d564d1b5c54738e995c16824852caad8afbaedf64749f5990d3c1a9d1d93e90f63116e1f4226883cbeebddd455d506882a19a001669f72284bb0d4c91451e07803dc010d6dc5b24fa3e7f586f14af92e48327903268ce17442f271eeabafab41c06cf889728099becfeecfd4adbf2a9d0a44e679490b373fc368e8aed06d4783300be5046cdea47161281a62eb2803a472d275fe831c7d3556e09d40c834e81fe173f2bc8280984ebffa53c08f825424e17dd2452aceb0037b8bea2b1957a7d3301bc9e5346dcbee9691e7cded7d6fe23165ccad921572e3a8a195f3fc86d00663d1188535521b4953a723cc23078930d4f377e9a5d9bee4ff1af9b06e5adf798248a7030363e7d91beeb34df8a0f0a58661888bbff6aa5cd2febea0d2618689b452ed9206c5f3795743d5e74bea350514d4dc197e7027d397af0585b4ca96a3d4c930e22e94f6f31446aa3de5bfd54b0e3cf5ad8f3de559f3e43b5cd053a0626336d64025f42010c85df1ca4af34d8b68bf2fb169a4c5d047cd95c2c4ad253c5338d70bcaeb64a6ea8cb2efdfe9d8af8f123299f343ae3ee348134c2b6684d648522149a0ae917172726cd72f64914f9008ed9bd989f65dd6f737dbc2d239709b7749e9e5e43b715546bab8a9bb267976e87237ae48e33fe31efb2e471fbeb6210201d7407133cb5b6123defc56df9c9ab218ce49bc4e89d8677620245d4c170068b36c989e65619a8a3e46a020cbc341434b00df9ccb8c3bbad71cf2d86cb2dde0ea9387619be2e157cc802a942b4419df17050cbdcf15fbe0dc59d450d4ccd0e0000000000000000831b8725af051d60a1a2ed1c70e72a3285c1956cffc3340a51c3357e391deecf38329558ed0a6719912276c1bdf78d07da1109a43e97992bfdd72bc0e1fc8ee7acc0cc23dbf1fea6a0989b015bd04ff164fdad086696577123f099f4a7a3db140000000000000000844b1d48ee320000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "b8f40c1e38ceecec5659d02577469ab32e05db33def14a1428a3192366b68607", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "ce9731214761e991f4d999dcae4707e26f9aa7f0f32a3b2997f341cb99a297c9", - "blockHeight": 6150, - "blockTimestamp": 1726091601, - "err": null, - "gasSpent": 8220823, - "id": "26a032ff6f701cc9140b69359649a1402fcdc8209bf41eef0f32fcfb611ecf5c", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "00a76143b312e4cbd62d06c7838a7b20c6b299391570a8a8d8d9654558d02c63a928c0e67fa343b3da45f02b5b39da3615965a6481d5b9fbda1c79d99687aa1a1bef14b2d1926a5faf63ff381d6b455ff96fec75228630bcf35056bc401c847712012c31502f5c95ea80155294364123e92036900e404c94a4ac749e7d97e604d0ffffffffffffffff848dbdbd902e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008c36650ea05667d9f7eaaa8422a767dca9c0fd9ef5654662a739d0e640e657677f404dbb9d3e0ded498a078f93b07f95aa401b7f4e284978a519ed71ccb1c6d2dea60e27f265f64219a5ec8a34845ccd5b3d2b6964a511c0fb333c19b4da71f09284d8f9410c633ea933fadf7d5e70c306d98e3f127baa0895d5cfac6640ad98029caf6cc7b4bdfda85bca331defd3dea1c61624998d23ec19816e02201b1263f3ed5e23cc9c5987d95ae3b57c203ac1b7fb5f31c9bf6b380c862a910fdcc483957d2ef90e2448eb212bf334465c3e80f3ca4807ee53a4b8905116f7d5b631fcaa491c223e0999285466e87de75481e2aea744fb44a2d7b3e39629f0a8b9b9cd675b67b8e616a5b9d5e567dfedc64436ed98601ede1a0335f74d864c554133819711dbb6d6cc623294de18b4e0e126908c292e1b94e95b7eeab7a78704ae0534a14c85fd2fb861bc92713887ce92ec0aa384c5f6708b3c466b3c0f6e688c1af503574a99a644ba7bd3ceb563fddc8d6d2a7d1958e40e42218b7bed19642bd049a7f99e5617c59deb352abfe9540b946bb58d856ecb4e7c8d73eec0dbd471b74e9ff5460e9b3e6c0ff21cd37ca6bd5c0d93d753c7cd1ed375cbc6d92600a546cc2ab50b2ed5bdba26d807b4e798d60927fb982f9d90c5126628b00437d18a64a18967eb6e435236fb50bee045edc50af63fc05faa9409c0e6f471fd53b32c45f5e89fc1573703fbbb0f4f31666a8e565403a8bae1b36557d0032521c42ab0cd4c83a60260a8b30ac8395965a199725d14c877f61d9ae4bc0de0dd1b6418eeeafc27d9f372083741b29f865cafc44221329ba204f925c66f1d4e8e91fa98573988e68357f2ef31199ae37b782591050b27db3ec4fe8d60a360d04a32b447e820c7bfad6c35fc0016094201e22c918e1e63649d04864a3a8ecc4c3b77f7b92be953ae9bd454c26fdf926617fd8bf8c8113c79f716f52da547ee0408d1c001ed16d162da1d1ca705ddde769d415cb1eb38594b1147a66d26085cf560cd15860234ab54ff0f85d9b31f0b7a10e092aa45403db3a2fb9292e8e0e04207feee93f723ddfe069429a40e62c3ffe0834391cfbc6524177954a04d990db9dba66b6d0c83c5bc7eaf34816d2f3f3c9193b9b8f881738c2a2235379c8fa38f6ab53ee113483e6cd5def54f46238e079be9b17741a4493c03b30bb348009c78faaedc5d5cf0ce428396938a15e0c29e1a8240c3ae9035075793e433eb0c58fe560b46cd8e8d744e4bc45d88c624682666266a740f710ea4539dd9cc9d1f4f05ddff001756ca6d1b9b57033023753f32beff6426a9cd6e9cd0e7bd7f492b7d6b2dc5f6ecbb7c15248f4f5e108e86c05ba1fe2ed8352958ac8c2f647cf87da76b9128778c19a34ed0610c2011623313baa7d36951f89f027c837586b26ad52dfb98314d18af8bd4d35542bedbf38dc4a505133e4517cb6f000000000000008d70bcaeb64a6ea8cb2efdfe9d8af8f123299f343ae3ee348134c2b6684d648522149a0ae917172726cd72f64914f9008ed9bd989f65dd6f737dbc2d239709b7749e9e5e43b715546bab8a9bb267976e87237ae48e33fe31efb2e471fbeb6210201d7407133cb5b6123defc56df9c9ab218ce49bc4e89d8677620245d4c170068b36c989e65619a8a3e46a020cbc341434b00df9ccb8c3bbad71cf2d86cb2dde0ea9387619be2e157cc802a942b4419df17050cbdcf15fbe0dc59d450d4ccd0e000000000000000010aeabd7933789f274b6bacceefb0db32388a9ab8c50b8f788bedefa777ed03f8ef680bd450fe112f98b312d9afd8f189fca119cc6ac054e7df034601d7cf308c1ca79f3dbbb9a4f18a66cb019a1f00a3be783d444ccea9a2e365d519b9230190000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "e05e7196e54f42297608518dff98dcc6e16d5a59d2b0dd931d57e529d1f37806", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "ce9731214761e991f4d999dcae4707e26f9aa7f0f32a3b2997f341cb99a297c9", - "blockHeight": 6150, - "blockTimestamp": 1726091601, - "err": null, - "gasSpent": 8220846, - "id": "026979cb06a02f7fcad1e249ba45660816958ef4c4460fd4f7d9e85574f17612", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "8a160bd24157e9a81cf82cef396b9d794db8e61884c2c90871ea9c6bb8bc380d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220989, - "id": "e573dc4197299b1a1b19e381c71136ad2d70c64adb689ab850ea7c6971955b5d", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "70e8c0d16157d7f489e9d2d6973bd1667cd275ac279b5f627d8249a523e6d01ad740ea9b0ff62d7a9141464882584199d9a8e44af4f9d45512fc4f3cc1283246a3338436d206abf45eedcddd11125634c4449799d966d3ae6503523b9cf6d9414f8f3c8d10815a37bee75b443b3c77ffd72c993351c05966d29ed5a5a9826668d1c7b005d5afae46c6294dc431015c73a1446214d430c1e7fa141727399efb2a59767d529bd6c8d1d08dca2613ee52e8d92452113168ee7b23b684a7472efc16ea3f0804601c04493c8a04a9bd293ba10f3c80955459edc5fa66def97dacc33a05bea3584b8f2ff396619d93a15ff40eb6a8cc08eec40f618684b8c9244826395c9f78266412b6871802f50661efce45c3623cb98c9d417716df1de8981d2f18206fff34d279762809a61e637a9f89f63a3727d665fba570b3a7ec0639af6e155dec39e30260786e44479290e31f4c47ea8013711674fc91d38e9b32ac5c7b49559a5e81afde0afdcd96e0d7ff5ac919264311d9b6b6d19ba628872190f1c5d5d1c4aa9f462158f2cc47f5586955340df0cd1cdab346029f2a23b738323c1688dc04bcff6dd6c5add058069a06d8b3fe20bd6406b622e6052f1bdf5d9648d81594e7eae747f3164dfcf2e4181bb0c8448ac98f2157be327fb15cc64111e351482686c972575350329e4c1882ffd57811c720514dc4aa2dc316ca58657d2d8d83a4c08dbb6a910e49720a6e7d4fd7678a400e8107dfa437e598ebaa3a9067260c0000000000000000440746133f0d162601ce3a408ff4d07bf21cb632da4284db5b8a6a2c9d229ca23e1077a3505d0ceb84ac2f0e234982058ae1c715a39483abe777e0ce744c874c99eda9df5b17df83fe34388cd1535a8175552fc6bac042136a5a9e06e777b80a0000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "52f50cf4d4a2321e47a043e5b285d237573de4feadc8f16efa3ba7a6591f5806", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220989, - "id": "dfd843b21ecdbbbc37f49a333b818ec1ce9eb149c54ea6da91aab9df8770fa4d", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "e5ac156e8f7e51bcf25c3a489dbedde9d6c52477e7e6882e24bdc6198f645609", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8221117, - "id": "d1574fcced63e4958dd333dae042142758683805fc493a46e2d45b10d28d3c04", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "84f57b1657281b7c81dbed5bcba04d7334745a94c266736e40f6a16bcc223908", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220485, - "id": "bca3dae0a262475b0f01e8e5ea6f5caee05432134d330d8f8ea9d2b1a172e037", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "5e0f99f576f504bc5eae2b349dc2c23dd7eb4b6cfeaa5e2b6c8210c58554c007", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8221117, - "id": "69c43c893cf3971a93d36d2e7d25d168f642efbfb05adc57fa6ce5c837704653", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "29027db41982ef9a5b0e11673a2850cd561d8f2bbe012df8544e0306db0ca70d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220934, - "id": "5a10b4d49336a16cdfb3853773a36d48fe3546d06b04a582db7d75ce7c3d4033", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "5b8fd7d11d6b3ef22980801c6be470e81cc5814556287980c4304dd973cbd709", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8221243, - "id": "520c9fa6ba726df4f3c72912171907c5a0af9691535d32dde971bc0cd82ef466", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "c65d3de546c94c02200bc0763d509d560e60fef02b3b5a6b39c981cddbe13c07", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220865, - "id": "4d2f97df44597c8253e18f84098191d6199087ad72772036daaced81565e180f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "4d7acb715451a1ee2a56e17135cbc96d2fe112297328bfe55220968ee2f2860f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220422, - "id": "49fed2650e941c3b357f8a5282fcc0702aab5d1357f895319be03a4f89994851", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "9cc67e9470b7914186a69d6405d72e4e3366d23e8d0da838fe81c02af1625c0a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8220508, - "id": "39ecf682eb4d6758bfa5dc758de4857605beb1d09de1f25cb7f37d6e65731901", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "c840c1fbbd76ffbd582c0354fe8c9bf262bf21ab67d3b4ca15eb2a912e592405", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8221367, - "id": "38cdc1363ee7bc4084bd0988b7aba10afd4716772971a49ad597e5abb6411941", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "e2cf33e953c333c8e01f3507e93d7395a739753e21a5142b662d96ddd666a609", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "b7692584cfb2d65b66e646cada362ec050286770dd7202a3e0780c37c9e130ab", - "blockHeight": 6149, - "blockTimestamp": 1726091591, - "err": null, - "gasSpent": 8221266, - "id": "2c3f4beae0ca9612d8c113264d7676c5cf1654ac6fb67968559f368483fac01a", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "7f613682701c448142d9541283cf41325971a6580b49fd0cdac71e2b6424d609", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "44d5508e2f77e36fa6327f753d7aebad65abae22ed8ba4b5cb387b10cf3cb2d6", - "blockHeight": 6147, - "blockTimestamp": 1726091571, - "err": null, - "gasSpent": 8220989, - "id": "fc4b81d734ae2821ce6e64eaa792a31c721df01fbe081ef5fbf8226d8dc6b954", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1af903c9ac613b1e17332432b7160a43ea2a5798efa2174efebf30272635d800", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "44d5508e2f77e36fa6327f753d7aebad65abae22ed8ba4b5cb387b10cf3cb2d6", - "blockHeight": 6147, - "blockTimestamp": 1726091571, - "err": null, - "gasSpent": 8220926, - "id": "5b58f04c9d138602f1b73a0545ffeb2c341de6ffd781c0f5a378ad4c3dcb660b", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "e7d5034ffaa8c0334f3db9fbf47537cec1421d1d69550f39efaa85dda2e97400", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "44d5508e2f77e36fa6327f753d7aebad65abae22ed8ba4b5cb387b10cf3cb2d6", - "blockHeight": 6147, - "blockTimestamp": 1726091571, - "err": null, - "gasSpent": 8220846, - "id": "314b3ac2679027b56367f036de27f159f7b36d8f4eaa1b58debe2db054a19600", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "6715865e2789b40f7e7ad82e5a2f30464e43a8519c14ba17cea02471af0b6f0a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "44d5508e2f77e36fa6327f753d7aebad65abae22ed8ba4b5cb387b10cf3cb2d6", - "blockHeight": 6147, - "blockTimestamp": 1726091571, - "err": null, - "gasSpent": 8221018, - "id": "1bb0582a547e3acc59319366558a12aa60dc1b5b933e660758656189f741f52c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "db8fcbb3ec6102c8ec8ce15f60b62d7d18ff3e68a50c2ed0974ff4fff0420807", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8221243, - "id": "ed875e68ff4b470b8b58c30e9d9bad1ab7fe2a1b7e354b0e3dc9b8b541068b33", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "845e6c788b3526f2680342cd6ba8c0b9adf6c3a6ee247dd72aa23483176c4702", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8221117, - "id": "ea34d0c94880979c2db86ed4de7a5821a1403489c8e050a7b9dd88c3e3bfc325", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "0f5bcb51605b6053b9e6cfb6e5bdc5a4e3154080230a7872792565cf80d06c05", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220865, - "id": "e7d4c72d33385465d90f5f3a6227a3d651a713f9918fccd2f74e0350b570892f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "20b4142daa4d23624f290dda40c262e95b77770339b5c29f67047fe0c1d2a902", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220422, - "id": "b47095ac9e6317f6d68391f6f1b750285efb83aae21ae667ea1157c25714d147", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "d20a57ecc6b38bfa50a2a53e91f170a828ef2e1ba7f917f7045693d213363409", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220823, - "id": "b1d76882c0e3989ed4b7bafcf3d3ca3ef10d12ac1dcf0a2bcf5f699b499a661e", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "4d282843a01167d2385ff5eaa5857a8fc3c316d25b54b71924031c26b871cd07", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8221117, - "id": "94e1522bb636c27279a81f3a687c6b3d28040c3d283fb9080ae5b28e0668623c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1f46f8c4ce31cef6a4b16a3f8dcb2515f264517bd15b3a9a008929e14d94ee00", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8221266, - "id": "7657e62bc3254bee8328c2de6b608b12366953553c301bd48e12e4c12c279738", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "ac4c4be71e9afb8f002e28712f7afda92b0f57d7b9a507f96bfff492cda326aab6e0087471f10cde8f75790b53cebbbab9a647b0f23bfc87770c8b63441885b64585db5e188497e6993e47539dae60b8c8ccf7a84f48fa2398901f7f78a9a3e99215e7c7f87b94cea81323133da7b6a896e116c79b413d5571055446fb11b9d599ca82d6dbc3f369836a1d16d0577e91a4fc71bbf8ce1940df18d6f807251acdf19a706db05d9c9277402767180ba90e130ad38bb42594d5da232ebd1873115aa4b5873d1c713f0e30746ea891e9757adb2e274a0f639a6a77fb7732b4adefbe6ca1f008640f11c67f30da55d639691eb2f2c318680cca615f030bb0628cc29f7403464c819b7339334be9ca65e7f3fc63f847648145cf4bf351293be0fdb67bb3e5e232222c227364112b1dbb274e50183d74073b61a04fcfa6c569638f5e0b4f1cb946b4250ab66ed510ba92f51712b85317240278662bfb67ed290e6852758f3cccc7270adad92710a15753ccf1ecf10be4536fd4900450c1415fccbd6f94ad4d5479273ac21e4f897ca07ae90b50298759b354befd1296007f01f5cd07f353c78ff1ef4e5f64f7f4774888160f478dd9c40bfb14424cf277b54af1860534d10a98356121577921f76e4ad10b2604448c2fcaf62dfd4293a44fe4e500122194ea6455b437439a8b59ed86f338d3ac0d7467ab99fbd14228936277e1acf5ca87b56221e5ad193b27a74dfe52135159717a7b48026afd0942b9d2680e2ae9a0e52b33c304ac7377539ddf309b10eb493682e27bee56cc7aa4c0f00c619600cf453ff1caef3cdd4a028d585db60b314f6f36538b8efe4db16157ca7017bbfbe261bfb6d04ed89ca64cf7ea04395aa1735a314d441b6571e36a606524e0b17af6c439738ed2a7f35049305a912a778416a89a25e126cba34bac86a501b0d8c4d9bbe862079365ad2faae9a3948a3b263d8ae757164649045eb7400ad9a253786306c63e285764e38267f2f1780c660b61d6871a197ab79092e55cb4e9a0a11a3c4b21882bfbf991a35c0523f4913cc906a351efa6686b16aee0f361cc79ec976ba6989732ac73663e0c8044e8df2d6212ea091b08122d444aac49c7ba30ef982a54c9eaa96a71e066ab9ac45b680b3259f20adbe06a03998f8b25050bcb2c029f91266a1047e0395025ff6dcfcb7c3f4e264b0a9b6021f4d71a879422a24bb5f88b456c28154112f05ae8adfce56c5e5e146af0010696023db25c63be010eb3f0f4989c3ff2caa243a4ec0aadc4df691bcad2d3b2e2b2e8162db2f3da215365892bb196b73a563baa5b169392a171b64bf0909a37d986eca9a28e891169ff716559fcd6d489718f8fcb38c3844127ce317b1cb0d2a575d545da4e083e6d3fa5b8fb3c614f30c3750da1984d3881a7363ab8ee2448ac6c81faba49c5ecb86ffc38ee148230ffa746067bfa9c4d7ec2366bbec3d170da41987be3a1c2912160de0ae6da3bea2ddf289872bfca3233d07a5359fccff817eed9b5946ed959cfd03015e00471cf3a81cd833d463f175e5cf95f42e9fe442c52d998ad243eb0f78f02fda7a26e63a090a4b449b2dd2d9885350f82ef95b68efb7fcbab6dc5184494e8b9abdd15a9f5edc88118d6fb37236f25caa14252a3a679e532fc0772e1b87f5e0aa6a0c29ed2b4a92ada702a7007d8283ea191a15e178b6578102166dd0c96916356fd3cceace2547d85d28a749146a807000000000000000093af024bf9fb26ec139fa1921cc49184469d852599f00d03972a0172da0cda74e7ec4632443fcf742b5ab25ef404df11036ed829c48b19ee0bfc9a8bece517fd5e31cfc45fc6f5e204ed797934433273251f57da0bfc706b2a19cbdbca8ec10400000000000000000044349d99140000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "cb74051541dcd5016ace78f5ebe78e6db485bed7767e8af81ee682cc2b68260d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8221367, - "id": "6f0a3e67da0f07290648c66a482bd395362282ccb5a3b43f30c2a7295bc1ed53", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "001e1c65ed86f01e9e8239e0497b3aa8515632b7065d0069778f882021586f1464d54882cbd4c04368330695133b316c0a0b43e5522d65145123d330b666152e64dd6e7920ad25f197a6425a12befb46e279661228f0e233e2168d66941c7a1aa1bd23009294e99135b1f4cfc74a34f72c7bd27312907090b0682a8a8070649597ffffffffffffffff00e41db9cc13000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b554399a3e3ecf9d60777035cbef07b3dab7e50ba7c5e9a77c360d56ce15b504d03a8a0142fe33ec49ba6ad546e2fb4c959a753ec4403e2115dba4b0ad1447a30b1d7ff397d3b553f5a88ec9d15f9cec7a5f2be001a79ca952bfdb180c8f44f19518ebbc0c94099b986c3db42d48dc2dc3343a973b37e87bdec14626b42b8b08d137e52eb1fc350ac43b474be2de7b4b87319e20d053ec7683f712e178911b79a7b98a72ff78989898b527d4b0119b94186381a97fdf6490c4052f17e92aaa1386365591f7efc2079e91220b7ccf20122e30ef21f9333f9ebbaf63c23e29b5ab47426e9e12ffe1b8aa8cc71b096bf6ee94a23356e4d72753d3470c90df335cfd379a540d8332786d78946903855750659e180a490d51337e804303e3c204408698e0e4fdf2b32fc078b4cd5fe8ddb1193a115f16be14249ab82327b3cec56797cd03589e36baf9520d0f67bcaa174e6a999636db5a738eb036844ab2cf8d7864013ff8e17641bddfbf8c141994f3673efce33c8c45883d75f4195926636c97feaa3cd7738ffdd11926267eb0a5bf9d398c717bf31360dd5e89b3ae29f92e166dd82741966500dc1d972248d99011d118b0f2bdf3af55e911db120c85ea86419470c971bee5b3898828fe23c847ee9fceb3ec160c60e3994f86ce3ee2b944392ba598d630259ca53d1000a6ddd754054feca06e52dc113d337e68c30a1bb9f69574decd7c7c76209c46073f43ea9272153292a91c127d8ca8dd6b5c21fe201f94b17dee8d157704baac300935c6736b11b2e823d96c1764875a1204e2d2fb4c1f1fbcf2511a3a2ff0d8510c51198df06b6572a4c11d724da1ffc8a94391132e2e165be31d48c865b551b99febb973f202ed637c1a1bad91bcd5acb3636b80ae037d4b3037034d0eedf7b4a0abdb90a620bac279b64cd4ae833f8cdebbcf21062eac2bb96d9d650451a50365ba667c8a5e066900061a058f3149801d7cb66cd9cb8bbb85d5da2493ad933cee2d851e542627fc32764cf5bb42781865c7c3f88066df1de7368cb431e547f17f6c2bd2c331c847617f5e935078e85b2c7b522b8a11b4968133b189a4333071d141d181673bae439c18e733e4738474f4198f0cdce8b7e386dc3faf634608d5fa7ff75c573df6c23c35c4370ad5eaf0c36eec6bbe6a4072cc34e936960e0f9c457919fbc64db08987e8fea74e1d587275a47ca1774d5cce94878165e7e1958a624ad0faf7673ef41fbaec9df595975cd92acf6d39216fb0bbba4aaa013d2f5b833a64c61e1ab7595eed68fc207b3f7b817128521b9a570e379e3d137c9455b4930f5c721039d68a4cdbae741f69cfe64d97491f23499ce90e4c356a715d688a1cb88de57a25b54eab385d05b82e508f9c2146e39999342e43c46f4a5d58784547d7774a8f0ca805f3de2093ceb740219f1b3d8a564af3a96938ad62457c9ae40f7c434d711000000000000000bec3d170da41987be3a1c2912160de0ae6da3bea2ddf289872bfca3233d07a5359fccff817eed9b5946ed959cfd03015e00471cf3a81cd833d463f175e5cf95f42e9fe442c52d998ad243eb0f78f02fda7a26e63a090a4b449b2dd2d9885350f82ef95b68efb7fcbab6dc5184494e8b9abdd15a9f5edc88118d6fb37236f25caa14252a3a679e532fc0772e1b87f5e0aa6a0c29ed2b4a92ada702a7007d8283ea191a15e178b6578102166dd0c96916356fd3cceace2547d85d28a749146a8070000000000000000c70ecfcf59cff955e87a764ebd0114172eb1a4fff0b82f6f7dd9a35bf7ef1342d9cf38c9dbcdc311dcc18810485f7b15dc1d5a9d45c6af6368e13a3b12514401c575cf63ae716032796f9b3c95fe255ebf3bb484a9942bc280a7fe3e65b0dd020000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "44713f290759b19fd1d88ad1d05d2b0783424c06ca322af90edcaf4372c0820d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220934, - "id": "53b6ea5e1db91c732ba7578346687441b8e72cf936245c33fb82b5bcfdfd4d4d", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "b231c3d7b67d57450a33e044f3b401e851b02b769331c7d6a14e9e256ac83d2b1d55bb33887e72e32f3132ffd4127a18ede18bae87cec7afd8a06461ff245254377ae4a2a6a1515f2357c46359676738844ce8edc95262de2c4b81779bdfbb5b3ce31bdcc1cc057d151446bb948f4e7551eb1e6c058785b3e0a9140266e2db2ef2bc04a7c5484141e662de60d5b6d04476f61ea044d3ba7e538873259155091a4eed4f80683d31767aa083199f8c44a69e6f0d62ad0e3ad64528ff8a56f258306dddbb7af147d41ed5cf3ec1e0d4ab40d46808044f96124fd087c979c9f1e21f62b2e5c186260253c5a54c288da1a0533fd6921663206aaa0e092cff2f16435e0f17907ef096f930e29492bd43f4c16f12e83011923e22454b94d5d873fe4753c01879d7c2fc5d0fdf64c1e6f402e7366e806987d794126e4a40f30da4d8226873a93f2880842ff48f1cf6015f095070dec6061fe684ce2873f28394de40ed28bec3d170da41987be3a1c2912160de0ae6da3bea2ddf289872bfca3233d07a5359fccff817eed9b5946ed959cfd03015e00471cf3a81cd833d463f175e5cf95f42e9fe442c52d998ad243eb0f78f02fda7a26e63a090a4b449b2dd2d9885350f82ef95b68efb7fcbab6dc5184494e8b9abdd15a9f5edc88118d6fb37236f25caa14252a3a679e532fc0772e1b87f5e0aa6a0c29ed2b4a92ada702a7007d8283ea191a15e178b6578102166dd0c96916356fd3cceace2547d85d28a749146a8070000000000000000da85d98c50ec31b2292c6d7bd04c15dfa4fb9a0b2c3259416830ba5ec2b8d02b33625b3bc41aeec7c2e1389d30aa5a0abe5f928491a15e933bdd275a552b5e88536d8efaa5e98ebfdd1e413026d23ecd8cd7bf5f9b8946bea718a52c9a8819040000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "81fe07ea2e80c77feb01281e2b11de80a778a70726e64dfd3a0c2b84e72ee001", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220989, - "id": "34a8a4ec97c6d93a043cc5847cd54fc2c99c579825ac55fb9bf1644f332daa67", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1b8f3d7cea0ea23b6b9c79f6f7fb694a07ae8f2c3e6235aabb119df21038670e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220485, - "id": "319457c27b16363cb674e97bc19849bcd79c6917a7b0f376426e43f4d58d7132", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "d6fc799b7ff584ad99c4af4117db20eb1e3b463fb91c7912d945be00f33e7b0f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "629cae53e629f04503785ff9307c985ea6aea4bb02ba78952962e1f8f4d77f64", - "blockHeight": 6146, - "blockTimestamp": 1726091561, - "err": null, - "gasSpent": 8220508, - "id": "2338bff9786aae7520c8a941e5481d1d80216b09cdafb5e975592bd99fccf717", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "9486bb36cdd7177e4811183549e73b7711f837a4bff08490832810c188c6c909", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "5c7244ad0cb27c2afc07bdf9826053080dc92e4fadfe63188ce07ae69a31c61c", - "blockHeight": 6144, - "blockTimestamp": 1726091541, - "err": null, - "gasSpent": 8220989, - "id": "3515c81eb678a0e6791b7d491bfd04234e6fa7b9d7e075a8a9d251d88b79db45", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "979b161bec7d807da43e281f86bbce3f86fc369f44f9fcb6b1e8910df9cec70a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "5c7244ad0cb27c2afc07bdf9826053080dc92e4fadfe63188ce07ae69a31c61c", - "blockHeight": 6144, - "blockTimestamp": 1726091541, - "err": null, - "gasSpent": 8221266, - "id": "2e14805c9398b1253b4047952b939b839b3c3de21f5c96d9a3ff38f69bba3246", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "ebc72431adbedb5616ef2594c7034f3f2bf82dc90917425a3163c370e7fbca6b085437983b3212e8780daa2505543f892b294a1c6ea5207c68e616847f4eed37dc7c55bb1bc69b8aeb1ba6b623d4e3eb7c2a0701898e642d761e054542016463f911331f6b8070662ffc19ea14e49fd90390db0880f72a6431d744f75a7fa61d14e575604db0068e75ad1b3b24396dead3666b803c5d3ce5feb813cb0ee07101d735566d5aac03064c3650270f2510e80034bd5a85baf72b2d68d970873ed45177ed1cf95ef8336c09b9048dd47a01a4e754046cb59571c58064788b81351e1aae577ad1db6a868a052c49cb6d4a5d5e8e9ee630c58ddc67e69887819da57e2828c89249e6559ce1cafc71f4043d23dd14d266e4b9eab629ae9a72e61650be73be02e1954418e958245837292d52c2d0d8847771bb66b7ba6bf4161505783836b1a630626aa9acf3f3491c9bac1c57e3ba5615e5cbf128c4a39e18cfadc4920e01cab1ad774dbb6885714f128cd283c07664503dede6d1cde70bbe031e6c2afea023335f55c0249c55277ff6538b2715241c313ff92fa0f68e55ae12a11fc0a47964cf15c15a64585d60db3e6ed592a0c7e0194c0acffc0dd63509936e27bc16595fdc48371d3d1c382255da37ddc0a664098be85793e8b3e53e3a761ebef425d38b2df9b5169bd650dedd6e3c6c4b01af849529999bc73d1b4577a319f36b16a4ae7ae739779a1ad1fa4a106736448efe6a7963e8ddbadaf2ca92470c133c12000000000000000004fd1247f1c8992e5abe56875559e383008d357b8f05c4bbcb34c055794dc84047c9c78393b4c59ea237af1c1de44401d7a8a7c1e32d43bd9eea142ebd88aca13a04b23e086a863b8804dc11146237f0939a0d1f57b1f3366855401a8f7855090000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "4dd8076f28b1d500459e6e492a05ba5c676dcc13acd81477f4d818be195ce80c", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "5c7244ad0cb27c2afc07bdf9826053080dc92e4fadfe63188ce07ae69a31c61c", - "blockHeight": 6144, - "blockTimestamp": 1726091541, - "err": null, - "gasSpent": 8220926, - "id": "09d9d4406837a85a11efe7282c8b6b6a17a47c25189038d3b2c48307298aff28", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "d1bfa11ea79ea297e22d40cc2789e35412da162af4d5b99c2cf3bb62ec36a32950674e359322f09a6273b6a71d01461c66f284776e066a96ecda39940d3b2e202e199b5c7fd0f32c22bc4e83524d97fc2109b2532048797050021530461a451eeac5cec62c6ed4933ebcf10eca6ed2c58d10efd12772f5c5feb7a9b0f5a94a11d495b5861c0a7d6516bc80cf4f0561477121e6c4ed103c5993868bdee3d4db205ae889c53fea02205b0a860547b6a1eb2b24c646b7aeb16ea6a87dfd7e515d73c152ea196d059f3b792a0eb725fe36ba741b9198743f9b3eaf38151eeb454e2cd8cf25e29bd57a6c852da64d206a5286388a17dd865597dec1f7ea54c2a2a312a05b6ca240b9a6e8520034806a539de8df7d8c18f51a92fc52e65b9c584e3937ca496bbdb14c05072c70bfbd808f68c7e39fd58fdf61cec83cef8e438e5e083c06e2deed92c2ad3f45ee156c2a6bbb996262de4b712f4f785f5702050c49f329bec3d170da41987be3a1c2912160de0ae6da3bea2ddf289872bfca3233d07a5359fccff817eed9b5946ed959cfd03015e00471cf3a81cd833d463f175e5cf95f42e9fe442c52d998ad243eb0f78f02fda7a26e63a090a4b449b2dd2d9885350f82ef95b68efb7fcbab6dc5184494e8b9abdd15a9f5edc88118d6fb37236f25caa14252a3a679e532fc0772e1b87f5e0aa6a0c29ed2b4a92ada702a7007d8283ea191a15e178b6578102166dd0c96916356fd3cceace2547d85d28a749146a807000000000000000038886888bba99d0eec215e868ba0643b81abe902ba99f626b260656499fa223f152d7d2548af5b5b988b35769458aa12bbcd17bb9fcf8fc50914f1b647cdea21ffe9bd341d26ddc71f2da4b1afa7c1b513742fda9c2727b3e5a63dba761659060000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "2e5c5ff62b979510b3dc21a4ace29c06a85330e40d7d3eee973c864c7beab50d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "5c7244ad0cb27c2afc07bdf9826053080dc92e4fadfe63188ce07ae69a31c61c", - "blockHeight": 6144, - "blockTimestamp": 1726091541, - "err": null, - "gasSpent": 8220846, - "id": "01f5505c4b095fd0e9c6101d64037250fd263163a185195b3c43f6e8ece29d73", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "145c577eb7c60b1b7c843d8d0cb3cbf2be16173a0e0d1979cda4ed25d2cd2e06", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8221367, - "id": "f64f69f7d5faf954f5e21c7fc844a0380b5064457fa75b316ee80d4e58f0f209", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "5d4c53c5a4403844491ebce683a9cb8fbd36196b98f49cd450e9333d95ee9600", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220823, - "id": "db480fd243251089a86ffc43afeddb0eeedf77f4c8dd1a966e2a4e67fae55f17", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "6e2515abf1af01c269ffe3f64cc735da66ddeec761b9b7269790bec566c39202", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220989, - "id": "d2c9c705a0d9e928abae8e135c916f1ffc9e04d3863e99434853e5500d6be627", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b1dff2866a776d9e8d181939aa99183ea7f73fa0c078cd645ef1f76bc1ed9700", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220508, - "id": "d1e82fc2dc1d89bf70f13b0c3be8b864145924cf3f3fcf581895bbce3ac0dd1e", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "2be77d2c7110033b0ce42092e87c71d166437642f59a20611f1b6f2ad86fa005", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220865, - "id": "d109ae0584d86a5cb4875d1a8733093d73857b56a3b2d35156a0b14f8bc87312", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b9299a2a1bcbc74092a42b6855a3bbf9e2679ffb575def96a3b59cab6f6c100d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8221117, - "id": "9b9f54b79583d00d1abde2c57a4838863470e2e3bbb5f0e15bc2d3aa661abc28", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "730fdfa081e84d6b8c94fad21642f9494b4f301b4bef7737e40999c33e878c3e0f910ffb18319dcea615b2f58c64e8b2ce1f7b1aa3050979431f86225bf67b333f6cda9579f0a6bfb4b37845bd0421855a890db984b38a95b2e765aea2524629627b5d1cf45adb9b5050c963b847324657f539244522e624778dabd54f39c772b6f9bc2dab107431e81af1874f7ce3931cd9cf480173b10e6edfc7b742a2476a8f918ddcd5841f1af6f48cd439a069e81270e89bad2ccf7bae6557d933db965556e3caa9338cc1bf2544e3f1c671591d58064392fa48d265a9bf5c847f9ad82a1253471c0acbfea739a36ff6e38c20af2d75a31cc35923b700d366c86f2d4630b3f5cb15406176a73c1fd3f3f883586b2871bb48b8b91a6393021c8ee823d308fa70b4ba50dc62e65d4d505319c447cd8f49f0665b4aa5da943aaca9a9516417529f2b8e906282a8594f1d21081c79092190e10bb1f11b7494fa0cae63e0e13486016882aa5fd76d93c2a5a448ecb0aa9108dba93ce0f31f4bb8f2f8c0743956958e8d5d9f55fd491b5c6d5540b675035e3a810eee039281b1626fd1bcc0b748d952d2903b58d198ea3481ba4adcd9a82459ea886595a128cdbf80afdbaef80cac2a99ce7c07bb343789dd790bbc819153980d5cb87c770e65acb23a2f7731064de39a7065dcaba14c251df0f36b680e4fdfa1d5d1d78e4c82acbbedc47409841b48001a1a54a2731510f60b6ed13d9b5071f98f5fb4b2c72f44cb2d16763e120000000000000000dbdf9ad69b97ab24f0492b8ef57e824ae2420fdb0ad5666094a47a6e54ce97cac03f4f1dc2c8947d436e524b123e67041f88a58e9f250e56a32f186b48b9a7907821be82f75e5dbdae3af69511059e3a08157692322138038d529c7621ab34080000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "17c6a912c0da0310428c0d4db8f5111deedbadeaac9eabdebb7b8280bc2bec07", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220485, - "id": "76b6179ebd302dd3fb09eab5372da38392d0c8f84b1848690928a04aa9187661", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "dd35255be953b2c8c7fbc5321fd35c01bdcc63efddf63af3fc6d019756688d02", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220422, - "id": "6f697238f0960b02c38a1827b2884c68f8080b5719b1fc3a8f7ec74af0652625", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "95a9b97688d79ae1fb2ffe53676d0b854a4215b57e0f1339f4957728751f580f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8221018, - "id": "6efded811558fd895cd89c18bea7fd5ae3ed0b36da2d6fbee06e1d6462003b4f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "c4285cb55e91d6facc2689e58415a65acbe416a02a15d6c6a97270081044490e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8220934, - "id": "6a17364635bfe4d530696fd0d38fc913d486abeb8c95e2faa3f17bda5db52c28", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "b7496ed710ce2e8c502551d1a5f989f7685ab0a98ab36fb6e0348ca035fe8e57c6072adc4977feb53b3e7747319e9ead855783d1252331365dc90287e2b04089c3695c007270a0160725f5aab1104113ef3d84b863f09c7ce77fc09812f045b390fc3a3d4542bdce7b8bb862e88ce07d0e23d0d2fd13d40d1a38d3df60a7e4b4d8929dde6f62cf99163916e34a1f7c8d92e8ef3437f64a3adb57d0ef388e293caddc8fc1ffa1e1f7f7ce796abd19f9ae4e8162f5f542449db3673152e3106d1094d54ac500de5b5307be1bbeb0e03222b2c5640ac782d18b8b49e9c855460b3f30a516f91d33ea06c51264a7fdba2606a498c0d39b519c37ee82187f711bd498f479e9508038bc8d93b67ee55ba915e9da4964d30f0802a40bb51b800c206aa991e173f6f31bf4b364e948454cfcf3f1d83a7c45324341ab4331d6d32f47799661138ea8dc5b4c96acf664943f82af76ad8b8a4874a6bb38ae73b3b0665b3e57d544c4764562cf0d1a9198f6fbad92a5ba2f98006bd18ec7a8117d05c0863c4e805f439304ed532277d6ab6872649d49ef0055745b7326559741a18e208559b0ebc55a1c8d054260e4e34cac7f3fc9ae9725bc43aafc53be1b298926d51f850199ae798e3edc920d87d4944435b4b12ecba3fdf5787376b6976841ef0f1f7b98a0b513da75b6023a8b194e5bc8fea977b925095d2a09531fb3d2b6672ece1bc878f748db7cdc41c1c02a5c8a7de125f4de6de69dff21da5cef767ba321999787b522d9310179273c0678522ced230a1f4812dedd09658e0f89f159c5b585a03bdbcacc9d42614389bf23d5005ff6333bddf613520d23accce434585b43755d612cbf4739610c5a97e3a192f6a4005f06b3127e88e7feb16d240d7a0c674ff461df5e73bea3a8525ee380bb8d404cbd53955da28da8dd6b31005a38c7624081c7b769689cbded488719249c046993e0665037ee6264ecace7379a07c43d8698ce8e207f6f91f2d0aa44a99515d3ecac6df7b07b164de262d24362981054eac9e9426361480d74564d6fd8c136d1c5461db111e9af12589344076e78ddd144232903ef9b66be8a426d4b4a6f0a228ed93d38167cbc8cdd788ec2842057bea855e5836aa1c67217809f9b3f614de3c00264a3f15ef3e5bba5d878d202a436b6aa1a6fa1f63bff0ff4ed692b337e0f0f6836b492fa2786b0e6aada40556193906d7e4923cd8268d421728dddc2f46ca85072273d8d590c5fbc1f55aec463012125e4b89fb17d03102705797484c41a77696a9233f3bd7e48a317396e7d71217330d7bc1ae873de9cc90c2bb7042e085bed54ed4e4fe733032ca5bda7c4d2b56e89e22066c241e5d563663fd748272539680619ec90c9687e357970767c7e1508093ab76149b418ff0402fc7b60230a0d4d60d73f085df2cee1ea8d3727b4d4754a7c3f2e163e660c2230791771b7f24fc94b50cb8427d7f6656de32a2df9af9e653d5eaf1064116642c712763791445e3c89a2731d9a4ce6255c06485c0f35e920071964a98fc9d2fc530b90cfdad49e0a4e275225f356cc5a7201d32d0086d402f07b24d02b064b53f6ab653611c2183511831e46e345c6ebecacd925dbc3bb8df112d5eaef49865903a23d95dcb6da79b37733ea2bb2c9d2784c6f256572a5b118bbb0c27a8cb77dd5ec41f2bc5af23e992e39de8ba300873ee1ff98b43c85499a0765ad08c8da247aca2a0ef4f0155b0c0000000000000000a1bb9d68ea558ac0f932b545bd631050622679b601cf216bcb934fc8d6815d8b7267397d3e320c81c4186ddf7af1ad18dc09f9522629cdb9b5afaa1ce0e0610536f8a42e89bea315aba6dcebb63c6449f7541dea755b88e7893bbf21e8a82f05000000000000000000fc861115010000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "872a52081afa90c01ecfed2a0bf2fa91ed46178d45139c5b5f2d273f96bd8400", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8221243, - "id": "3af65887fb433b2453f5d5c19654235dbfd0c883581ce23868242b4c77d95849", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "3d372b0d2abe8885184bf22542ca3d3168a741074ae5d45d0b2a50e270da8605", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4cedbeadb3b661ba60896b8ed6aedb141818db538ddcb9befb8843bfa644c809", - "blockHeight": 6143, - "blockTimestamp": 1726091531, - "err": null, - "gasSpent": 8221117, - "id": "310d646ecfdca3e596ac20636cfdc824daf10befd25d95a0e767631ee46ddd3e", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "007d66ad0b2ed1e0e2884ae5df5d2ff4fd5614b253364221435e5519ca55a4f1d8ddb17b5de1a991f00dbe5463edb5ed3fb709daec95f69f70ee600b0256b01f12bb34bd0c63d813147b4e021042939e9c8f154830b4a5ad2bddcd0f448b055a3514004cecd30cd095c99465d231530f602ccb1fc22009096427853563eb291315ffffffffffffffff00a0d424f200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000abda124688b8988ab573356dbb328636eb1eb58cd2fc29ea55ebb969f95b2c1ce176a20fcd623fb34b7dc7656df57d9d90f8b5db8ed829940ed8182761ac370996eb6cd9915551fe31906a7cfb150b9e39d12cd2c2f63733670302ec105338e7b7eeb12ce51ff8e0078b43c856f19713a4b004e5ecf52cb98a754a2727dfbddaac2f156a43ce60e1fa58ca84750a6ca8b3379f79b07cf2b24d6b64f928850151b85a4169483c728b139e3f5ba932cd73ec8e72bf982239a71a8eae583a3429959736db5c7e8338196a2e896c6f043b44490d5fe78f3bf8cd539bd27d4330077492c833d9bca819504d71a6761ff9bc46851bbe196fe7cc7d676b1db62488fb5f111256f8979bebbd09701bdb68bbc40260d254e4c16a4998954c7fd7599e90c0a5ebc988ab3f90b53347212c79713f70117d1bf933b2c68f36ab8fabdfd32393a4128ddcdd2c4036e5f6c48d19164eeb828f698f708eb0e70e227277f747923686381fd662c150b3dc1c69c529750e77b5a1a72590616481bdd37561b627845a88355eaa95e338f1b1bcd5b4a0e04683538adfabb3cf78bade6e6c595fe63b09e802d3c1b2d291483cdb2ee8640753bd8d0faaabfa51e4ce3a7fe9696a89b2ae1feb6ca34c1c7fe8892b82735eb56aa55e78d3d81ec9c95bb687ac50d31b22d7b620ca01d6fe6db12e9d2f672a3d131be25d696923d96cb846a7d2404ee2793252e2aac208c73e420839ba72a1086ba1ebda6949b23e308274f4fc88edd831a8038feb78cd4392af878385d7ef280700e843db02966f8d323e82338c29ae10ea0a2fbcad525a8e1c246efdcbe32b3821d956163eef02942327aaa6ae54c80b0950ce9f1eeebf0a1ebe4b2d02ece5703b8c7337a2b085161043156c19c54719a113833b65ff88e49ad42386b6a71e7d64bcf96010314c1e6a18bc8ffe8927352b4b67a55c06cb7f4ec6a0e89d0ae3e04c7ba25bfe6d84065b4dc699f22eac675fa3e5763647ad722026b72313a0034c64c1484b3c356d8c2e828288672fa1eba7b5e320563ab91205536f562dcd0fd46fc1024daaf9d092a5688b0e3d3bb6c9fb78e28e9feeb73d57f64365dcecf9b4233dd3433b03826eb999e46770f8ca15e47fdbdc3d662becd49b5b505e262fdd0eefdf7e46fc370e9e9ebedef16f799a03b1c9a50f644e4c7104507dfc4d478209b4f8b0eef1dbf7d4c2786d8cace2af42a7e3dff95f86269014abfb2aa0089727fc56138113b417be151df0f89b549e1f9defec41049dcaa3168de4dc9db93f24b1e27bc150cdcc7c5fcc4f2d3f112ff9e7b3df948a9f20a6ac569f61cf2e59503a341306afe1507323d00800661b3ef95a3f61008f9a18057f5db1007cf34331d808791e64cab5ab2897399f11f10b4108fe75cf4127f8262e4ec6e6a38cda1fda32605ba47760d4d822b0f21bf1cffab839c05d13d4200d0fdefe70d0523e480000000000000050cb8427d7f6656de32a2df9af9e653d5eaf1064116642c712763791445e3c89a2731d9a4ce6255c06485c0f35e920071964a98fc9d2fc530b90cfdad49e0a4e275225f356cc5a7201d32d0086d402f07b24d02b064b53f6ab653611c2183511831e46e345c6ebecacd925dbc3bb8df112d5eaef49865903a23d95dcb6da79b37733ea2bb2c9d2784c6f256572a5b118bbb0c27a8cb77dd5ec41f2bc5af23e992e39de8ba300873ee1ff98b43c85499a0765ad08c8da247aca2a0ef4f0155b0c00000000000000009adcfdb6c8bb8e60af6d157f9a90703fa437626e96722e3db9044e1d3d0866c7b2bfbf4440c17587e48ef801ab04551277347b7ca28cd7e24f5470ad9234816cb21aee9cac08fbc92bb4caee034894df6a1c5e05a27e3f652ec1f137641330080000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "1a424e5ae0a1c419abc1cd16d4de31c9b699be0a7964fc2a4317b4cec6b91404", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "297f96d20618683b53bc1756c9ba170b660d5ed077f6b12f4a19eb716e3bfdda", - "blockHeight": 6141, - "blockTimestamp": 1726091511, - "err": null, - "gasSpent": 8220846, - "id": "cca1eff38133e2dc17fd67ede308880f78b70f7337e0f158779d62924c1fe52f", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "befe14f664fe1cb95f89b7500cc8a8368b3cd8ab58f4897dd3c0132cbebde004", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "297f96d20618683b53bc1756c9ba170b660d5ed077f6b12f4a19eb716e3bfdda", - "blockHeight": 6141, - "blockTimestamp": 1726091511, - "err": null, - "gasSpent": 8220989, - "id": "6d9d6585dc4198807d4fc2174fc6bcb5056c3deccaa0e5ba3d3fb17a1d42dc71", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "dd9249849db6143ae4bf3420da9a2bf90b402807f0ef4843d51dd06db35e2a0a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "297f96d20618683b53bc1756c9ba170b660d5ed077f6b12f4a19eb716e3bfdda", - "blockHeight": 6141, - "blockTimestamp": 1726091511, - "err": null, - "gasSpent": 8221243, - "id": "21479ebfb8f6ebd993af4a95eb124642b74c04c7c50d0261558d006d3dafda5c", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "1466ebfcaefcff92b8bb88feb86aab902a73d6062731de52d3f22d502136fc01", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "297f96d20618683b53bc1756c9ba170b660d5ed077f6b12f4a19eb716e3bfdda", - "blockHeight": 6141, - "blockTimestamp": 1726091511, - "err": null, - "gasSpent": 8221018, - "id": "04570e0677ee50c9e3d4c4b8fed0aea9f350208e0face4b042e633eba628d523", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "15af4e04d4f34b89a77601945aaec5c284ff71ed076ba3e4c7b6db1c7cddb80d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220926, - "id": "fe8068580ab08b0df0a125ae9d127178a511dab7afefc2990097bdc36831c62c", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "eb1188fbbd214c391af6b2a70526e5a1d7969364695f8d9c17718041693dca151d08040ad0d1b6289106518051685a5f74620ac403665b69db7c8eae77f7b53e6659b94a99dcf767f8057086268806d5218cbcf8edad34cf1a49eec7f3d2374e29fab9b31ead559a8a66157165ce8dbdd72ae4c58450e722f41bc692ee317f50094023f479cd90b94c60030beb78562e7925464eb7057b86847c1dce9e8b446a50bad075f0091463bd4dc7e122e6a8803d36bf98b5c0e08fafe08898dc3f1a0900ba73fdc81d721f1a688394fc247468532353ebccce79323c3378f09122dd39e9290e222280fc9368469ee92e6f3951bb8945faa7aa341f53ac808978519d6f95d30f1c9f2feebee14b25919d1435c26022b1377e45330340e5ca1944a6892d553185a8e045039fd373455ae4d5fa99d604c32014f4c0f84cddf7d8dd2cb743a2a0d863b7206faf061ee163679bd080fdbcd819f788f7fb5e1d67fbe35c8f6e50cb8427d7f6656de32a2df9af9e653d5eaf1064116642c712763791445e3c89a2731d9a4ce6255c06485c0f35e920071964a98fc9d2fc530b90cfdad49e0a4e275225f356cc5a7201d32d0086d402f07b24d02b064b53f6ab653611c2183511831e46e345c6ebecacd925dbc3bb8df112d5eaef49865903a23d95dcb6da79b37733ea2bb2c9d2784c6f256572a5b118bbb0c27a8cb77dd5ec41f2bc5af23e992e39de8ba300873ee1ff98b43c85499a0765ad08c8da247aca2a0ef4f0155b0c0000000000000000b3f712272e7cea28a7ed334a915ce6c02b69a168d51813b5634b5adf53b1ca900ed822412baf01fb8eb2ae433578f509d0e1200531b5ee55b0add0e2dbc45018888b8af8c5ecd528d772b57bb5c1ac5d160b282028c2330efd8fbb2e64dc29160000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "edf201b85bf3e4b33aef17df0546c6839337f8cd45d26e195ac25d532179d80a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8221117, - "id": "e53b2e26840655dabb24cddc29223649fe7e4819073043260835cc13db1d1053", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "0c72581eaa234ab8955a814d2e5f37c022e4ff6e971d7db58220153a1057381d5612f4792f2c3b0785aacb52a71a30e30047356d92f090d4ca73922a369a1968a66146514826a23f6f4cd8a34aeb07ca30ab6bcd98a0fece213d00ea6cfaed30c243a70970bbadd2f458eb306f608f0bd3deee103cba663cbcd119f5051afb1574ccc6a7dedbe03b2fa1f1463e58147c4db87cd45901d83b4e13193379f1ec1b8a0d9714218eb8c35476d637f8be76e28bf451084c80cafbb8e23030402b802314bff1e51411a28992457b7f1960fb767e4ca8caa86562117b3ccf5abf4cd945e578d84f5cfbf6cd23dcbe7adbec3d92e01b6540a8308b886df3eec01d097d73bef302c6006b063f36e9e70670f4c3c0673a0e1a96305637e8eccd90a75cf81d2d4abefe92825210004d1d84b94045cd6bd53cfe3cfe59440ea3f3c6c8c61b1fc67ba118ff6ca0719547df5084440e586ff9d1bc10d027999cabac54860b562a098193955d4552e83232067f2b386ab31c2cbe0cf760a90ded940db4d57ba940f5a88c37be2654f929e36a84e519970932671c1c94bfceb367009615ca5982d62fa175dce5c1be6556f004990ce5456f764096b732a5200a6da79f88c79d1506fe5a47b7ed32e40833911deda6b4657fd721c64503ecbeea3301a867175016944d57787c62e9a42e66ead23709caa302e935b5f9788ecc914631d3c4b5a1ec890e4af5fc8726b8b15f1f2e616363ff069097bfa25ffcf5bc33517467491665110000000000000000ea8b93bc7f6c2af66738e5f707440161f70c4a55358dcc299054f17dba41220c2e14ebbe578e796ec805beb340274101208fbfc118f8a5a99c9f3e1577988bfedcd6ac1352cf94fa9f58f7f89e192fb723dda6c52e35b74b2e35a0018cdee0050000000000000000", - "fnName": "withdraw" - }, - "gasLimit": 2900000000, - "gasPrice": 1, - "id": "aaffb79bf30aa79d3313cf391c442e36ec57bac85cc2e6cd3b356869213a390a", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8221117, - "id": "e4ac0beea2ccbb0521fe399300685a439708844de6529ac1f112c7ed1eaa9046", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "c44e89624a2e913de3609572ada47d132d457f560293f1996f2eba303f37d002", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220989, - "id": "cf6d07234b77747e375fd1ee70a61e80f7bec74223a7b5c8c9d6751198e5106b", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "25e9795fc65efb60758004f97b8ddf1b80c6d89cd343db1bf9ac92c0609df40f", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220934, - "id": "bf88ab9ebd0451a094e5b5436c598a63b46badab5067aaca4c419888d2c0a743", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "5cc70e00e7ea9db06dec89ed3bfe793c8a605f5b2f894ec983f1043b0003a901", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220865, - "id": "6639e508022056a05147565fd253a56f7bceb9c39d08d380d1163368b6931a08", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "879d4f205d94324572b17a8a0a7cabb0dc5d4f2f07a0c2d0e85acda9e7032522cffea30a544c2c8f62ccd7b9ca1d326ea50bd2e40ef7fd380f3b4b028bf889f17e214cc87e87a0078f32159f309834eb35add3e9da30c69d4cbd09373c50913f82ae52ceefa1b4491ccf8d1812305384ceb19b4b6bb556e4868d9186e3a30e8a3db4dbe6b7c4ca08a547d26294c9cddc8506eeebb243309f8fa07f28bf1b27ecb29901b884ca6d9e2b22dbe0c2b9f96fabeaf4c965e4df5bf188f2cc1ad35ae5ad661cdb669bbd2353b37df3d4ae9cc8d8207810a160796047e4011616a1d20bb0ddb692b82b7f2013f4893d1c1655c6a3a226bb05c735366598790ac4c40f619e0660d99ca724f358dc16ef0aac12b6d527ca0ad2cb81c2336dd20f644c261db083ae2c67b7dc5a71b11ae4cb873bb7d5a8bb834d1deebb0e8eccbd7cbc88c903a930caa453876932379943542947d1a5adef2fe2832620133a10e8fcba41f7fc2685939f06c9793e187ec0519544e4e710a012ba48a007832e46b40bbfd4808ecdcf8120416c141f40cefa9a54dbf0c63053dc7005864e2c796d3aa4074b185026e7570b3ba46f4e1174f8d3539165a5dd851bb6dc8485c65212b68245dd913a5f68e45f569d4aaca4d393c0fb27a7eba9a90d6d5c322b48584b969187076b8fe7ce41c2d0a8165cf98ada0fd2e4c2f61c8dac078af1dc1c69249a3e146a95bfa1c8628df7fc5882be6fc82592b4c759a68036ae0bafcfb1ae8d72f9ad260b2482d0dd59ea67d928dc3da962834a01e96ae66cc647bb9e4268f4f4a8644cda8ad642c33e5014bb51fe1a8c4e83ed58f21cb0fbf19e753fa7b03cd8a6241fead8e94cf1feae111c0a188e4437b8ee0c6c7c97630812de8ff18aa8b3417fbfed291317c289b4ec79d6807325e6f6a4399d5416d20dddf429878cf04c7b3c073981ad73c920824bf49388b09cce06d6250b00c6d923020ba9cca45b84673e8476e713951fc1787451a0870b066aa80f037a157a7f5fb0ca227acdf2622a15a8d5ba6bc456bac5790738a5822e3b5702294884ec0674b62d47e23391c191b1984d9dca872e4edb0dbb050cc08618ee9256f401bd34160bb788cde37ff31f9eec263a952ab9719495b4bbe6c4adfa45f31acb895d8f28027ad642a0a26cdaef7db99be7a6f4572ae6421c475e1fc12e2822ec7c3205b4cd9cb3b7901eec59c03a98e213b4ba23bafcaa313fb3b3cafa715232fd385966c0ad81d8dc35ff5c18a52530ab67d810b9a2ee2050014c597f765a62fd954dc213b16dfde4ac4ac0595eaed0bc9f1993852436cfdee4b82f9c6e2c1bd65eec8982fd556ca7a70191c0e3295248c87af070f5ea82fcbd4bf4aa8f0caf2af0c20fe7bcd85883b09b03facbf0f366df1eb69e02399fe7677b29519f72ac06ab7b5864d04021df68ec81beb8445d41286315340fcb910265e947632e55cfe5ff8c9bf8a86c0cb9a1594b5f06f6238a99edefa06dd4b54b01a27f9869cf9c62b945a38e3e3c6663d0d17581fd084717dfa334a9cec29bf6ba0a5fd0b335b37ccfec3a1b0a9400ccbaa7db7316e69867514aba830a5adffb621aada43607edc3fcb4ee001a588a1697a7435aa91737e6f54764c2975d7f9c96c0feec667e5fbb1bcc3866ce10adf2cc459864b60e18b161af38eae7658782c5f31f31e4775543351b38a0aa1bb40af46a3e2c1f17495c6851267a611b6e3d3e14116dea190000000000000000046e60b4c7f86d5d43589e303a745f57a1434da610f294eb6d83f34985a3be3324fb0b9ffcd01b1cebf81692c74c930e68613cbdd80e04090d9da58785d837511b559b9f52e1005cbdc1777a4b5b73b054b4f617679baa21d097088b82542500000000000000000000f4863a69040000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "e3cb4dffd4b913956d30a04761a5caa04733d4bf90016ec20bc7a8712bce1d0e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220823, - "id": "6560e923d2e81d5331666406fcca9ddb906d6c0b389ffec7e85c05af215dc24a", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "96cfb6036b4fb7b15657a43a4d1da202cffc7850c27907b091f419d68831f80e8c91c8c416c9bc64efab5d4ef104af3a8fc87dea51e5db512205a4d6594dee5bc4f310ea0bc3f85e91e5064b272443e6227e71324f19e5b540485a64baa2eae8b38bbf78061cff814a09a08f44bd4e70684f72ac26dd9320eb64d79349c59f5de766089bcba4f4a6a734a2626cf2cdcdaece512b2a70b071a218b28b4761f36b2c5e7a9619a2cfe897307a486aa0d7413e576cc7baa7920a788b37aa3e2edce0abc449a2562c1a30a98f49242c5bcbe294d8b5aa77693cb2920837a9738921b160e563ef7088e0c27765b03463553217b29dea0ee9d56d1930b589a26a6143cc676243a6f9060eeb41ae52add72f1b4a3934e97d7d476cb161e1a48489dc981ead716fc4dd3ada6874a514c3c1824840e3fc4abb554a2b9114f39ed8b312d2db9c7aac98b935d1027783f4e88b3205b5884cb07e0d6693685184902f43e0ff76205be04032f23e2cda7ad0ea60f9a992c14b3781b6e46978d40f7797ca341a80b7d9d346b5548bdd75cc55b18f52936846e53f29b0c0b0f23a6d9c3221986b12cf3516df14efdf05d274794362f6d698b5bc088b7e16ea2f724908ab1e63f9217b45a2f66373caaa00ee3dc78679020a508771a07708b3615c7f8401b0fc8306944f608b193186f4b91c1a7968fd4fb437e9b687fbbbbcb0c5727db06e1eb1e2badcd2993cf8c4283b435aa20cc879e252d343a7fd8bc6926b1d37849dc2a47f11b3ea43afb3785797016a502085640a47ce5bf6c7a5ad6674a7ee5abaef38342863098807c1a3c97763cefe5b51696ff3c0bd233ac87c1b53fb92f46c30f30ee7c4c34a730a2fc021becc7b17539a14d83d281cf1e66c23056911d23507bd02f96ab9c2a23d7175b60b1461896a5518554f2bec7566d9f832c9f08ccf4f950ede96f43a6ce203bff5ccff8788621f6ea0f342bf83dcd61b0ed72bbf21f374302c57e06daed8af8722f4c8678e5bd23823022f3ffa789003e2d40e713b222617595604c633bb02afc56c31a309746248abbd6c721855f522f22c6025cbb71d71c6dc62592519e710e42680d0125b931c944232bace53c131398f2fd1b568781441701d686e284307d5d1cc4d139dc75d38ce355f356755951853d7b49aae349a54c19137550e593714ac5f7c91b3831ca6c72787dc18ae32995cb2c27401c7000aa8c9504bcf274838be078983048819ce23e365ac5df2d3c0d1b92164f22972d6ec2f61db6d4ac1ac82d5fd891ce219c528d476a66762743651c11e918fa5f67f89fd4ca40052a733974aaf38276c5f0000e78b1dfd20e55444a18f241031f4b2b462fd876fcdb17b027fa968d0155a36103104808fd49221851c03a221978f68374548ca4a7926ea3a75a9fa32391777220758fcac296852d247a5483672bf83df78fc392adb8caa67c8e769e0ff15194560c6236e6f644edc708241319543d7180d4ba3fbb5c6f2038450f6059a822b39250f3595c1910ceb698806a11c0045f46e76dd9a2c29c8a654dcbfcaf18a0d69e924bbff733daf01ebce0d20a93b464019e66ed3d036268c547b31fae3112951c5988e2d9d99214ed6c2479457f2a548005ad9222929c7f1f248199e2d526af1403334b7e64424d02befdf218d0746deadb9e8e971160b2b00927740c8b7e20df5f27523b1ff25e5c25f11351e19bfa11e0c4a57ed328d40076c00e4d3170000000000000000ea71b782019fe97b2c1fc56ad9b2d7db519df55c4fb46e248e5088f5dc599541697b4f59ac7849022e801e438a083c0f31f324b76e2f8e207669222caa9b9a56840aad04ea063e1e7b303eb57da8e17d5c3dd95578b12bf430677e3617873613000000000000000085c4d6324e0f0000b8faffff10040000", - "fnName": "stake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "e523d79e65fdb7d90b4e0d6c61f35f5227e4f188c9011907b7919d9cd466eb09", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220485, - "id": "4e9e14c3829a0c3c24b47fe9046aec25ee8efdeac23a2bc99ed124408c4b7242", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "00f91992b3a6b8930e2f7175cba59da1ca5eedb0098d2b0c89060be835ae4eefbcce1c7d852bc3e80e8ad61a02e45075d2318273d54d51b49b8c0c4aed88998520cb03d772906117b50ac3de03acbb24d8f9c169e5fc0b29372284e281a47d7816837539d9879a1bed8061de5649de8467f9c76fbd8fc7f0dd4589d6777d82edd5fffffffffffffffff6def6cd360e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008331594f7ff23f324868f6a1cfa2a96908e90cb74d3d67b6494dbcfa8a3914565fb156ae39f690e22ac90d3ab43348948c6a4bd0a3e327cb4f51f7986c00623828ddc3ddb5828e243a61510c7329f49e13fca5985c3e9c582e6b09d6a212c5b6b7a728d492fe1e788ea64eda14845fe34e43916175310282f44a19abcb217b87978db09ae85c9b6aaea12832eefb3c33b05c07e07da46b2721b5324a58cdff2362513e8959069cda428c238cdb9661820796bd59793a83fda0d3708bebf6f2a88a9d4fe3ec78ca227fedefd496875caba8b8c9d1433b1ab4430e4866d731d01ea6fc959d8d373b42b4d21acc2ea958f2b9b0a673b9ba0c501fb8c4499f3029a53989a8bf257c9d962ec2922ea6d89604f088c93b17a46153e1b79b6e8335eb0587b0f9b475d417eb36a454049e14f24f58658006ba33afe8d4a893f2622ea255086ada576f66885ed474f669d5fd6d39b4de0760c033614e55e4f213562affc827d5d1831e9b21fc7e4b465bd9922125def73e7e9d63ba666da3a3f32832ee9aae0d99e55656a247bcd428c077c9a6fabb3e0a27c5f94f7c86cfa4e2b27cf652c5b7bdd52c62a74842fb3df764ff6557acccffc88cdb394783bebdaf0a96b7ed33c4ef4d74a9e616e70471e96b96a6ca0ea7b04d3b0218f7a23a8ce99ab4933496b95ec3e47f6a868dd8ce4f9df56ff256b57cacb2f4053003d091193efb730374433c28920cb2482000d818e6a5b178c65904155f3057d1d754b66c18250431f6b8f0c1b9d1c372d074ec81da59451930bea66b1dc5184ac392f14949be1c92317063c50996e9643f3a57ea45584b32058622f100e4344f89b221bf3ad01a402f41a0eb431ff740211d70f5bec18f27a9e6949c00674a6735cc7e09061baa1c061d78a2c42bf52fd43e0982a0fab15fd08dce17f1ef5b412cc4ea15533353fcb00a599782866ce60f61604c8020053eba53596ff02d34dedb378075e0ba918733afbd5050ca6ec285ddda74a958656e2a5dbb9ce54679578d424349ac0aee50e98befb4d761dcdd8008e024753c061406946f9f05a7071eec95b448ccd1d2097a77b704c30f53450519be2f2f7ad06ab3e561bf47d8a09b2ddf1772be6b06191a7b999678f0ad2e43af8e529404be122b63a690b7f7bc7e9a72cceb288614c075d4e3fd0dcbe8c846aefc74fd42d0456e5b06b8ed5853a30a26560e0125566fdb7583391f3e37f0b244aa4be9a273535c816d6a7eea4ff0aca47ffc9a71f4ee3fe5b7991bdec1c68946a965592ccc67c1e851a67834cd12a7696f3362dfdb828f8a977dad3460af525328e407401a0642a11bf190dade84e1a0fdc99a57fd7b00f803c98955e146a908211dfbbbfd6e0880c84f58c8c6be16e4f2ace047bab60324f907051eed5aab21da1d804ae13b2dded68143f62f96a953fc545e8bbaf3fb84473958ea3eea4205cf30e8371e4a00000000000000194560c6236e6f644edc708241319543d7180d4ba3fbb5c6f2038450f6059a822b39250f3595c1910ceb698806a11c0045f46e76dd9a2c29c8a654dcbfcaf18a0d69e924bbff733daf01ebce0d20a93b464019e66ed3d036268c547b31fae3112951c5988e2d9d99214ed6c2479457f2a548005ad9222929c7f1f248199e2d526af1403334b7e64424d02befdf218d0746deadb9e8e971160b2b00927740c8b7e20df5f27523b1ff25e5c25f11351e19bfa11e0c4a57ed328d40076c00e4d3170000000000000000d554065c0ee502dd1f1d91c0beb76e04ca3a98327db367d36038442db3521082881af40b5fe265fb2077d20d3708ae09d27f02d40c476dff12f7f64e0d5a338c7b82d32e1ac538d4a60a0275175ec0f20bcbb44ab1479c54a2ae96a5b0ddb60f0000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "63315d5c29f115ba95dafc3e9966114d09c90664d4b368a3093a5aa7ac131906", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8221266, - "id": "39ade0970b00a25bdafca2c6313aaa34f9a11c007d1c6c02b6d2ff9f44ca8a58", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "24f194518c711f820f5d98bd88f37aed30e921752aaffa014ae02a36b2a62107", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8221367, - "id": "341adfae4acbeefb8998817e0fb2ec44d3e52db5adeaa7d3541533ab1b4fec37", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "9fcc569a12ba09a5e7409569842e27717921dc127f3d1cb54f8091010ef0630e", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220508, - "id": "2cab5433d572461ef7192e0ea43dacc743f904b7175ed92cc88e2da8556e1c0c", - "tx": { - "blobHashes": null, - "callData": { - "contractId": "0200000000000000000000000000000000000000000000000000000000000000", - "data": "00542ed4b2729d355e18a0af85b7cd24a145606b5cb6ed121640deb0bbb6e51d6e8d28fcd5dffdc1afa1292e72a3a5b94de2c7ffa81c6e6445496a4f5c770c576ca41126e65105166efbc94a995d2bf525fb2a3f5eb8a980ac14dc5debdc806a5836c37f3ac96544d8d34389c75a3e819b245b35c8dee0bce90ff19f1e1a7738a2ffffffffffffffff0070a6c17403000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000834e986f6f43ffca30cf041e2ff055a1eb5693ebc7338bd7d5d39995b6c5bc6b4e1219ebf7479a7ff55a24ca918ae780aa243d71fa89eee10cfce9063c12624a5051757425caf64457728f3a26e0c03837f6d09287bd3a18d09cfba06599fc06b2b9f8ac4dc3ab17b5a5cecf49969d485096e3048125e205cb3f16a5e01aff976a4a3ec06aecec549827341a92c3df3aa9fc38b0b6d91f7b1665828bf5502f1f2a8f5af54ec33dee6c6f9ad2c9433eb58d3a5cbcc43195dba5ef99b21a20821ea8aac60571705f1456c0d7ba880c695bd400bcf69f473a1347bad57bb4c2442a2ee97f1f587253719f75713d74bfabec942136df530646937b978c72b17ad109855abeaadfea89c618299bd0161b841c3b2505c5d6b4f41e5c6f62ae3b8d3cd3a70927d6a7f959dc945b5aa8a374f1254e8b0466cca2b6b11998e768e39390e4ffaef10dd4da7aaf8fa20d7f7f3ece7aa9d972df0f72f0ec5399d84daf924cd5cdde8c93b043a51da91e08b8c175be13a0471c6fc9aa9ca4f10f243e3b58f18b87417cbcd993931b92c0712b030bcfc86dbbbaf6f7371c47aae706acb51d1ab023089dddc0f82426d528e59b05bba354997d440673624735acf2ceba52badb2f31e54a34cfd8e4084a1f314ab3d22210e1caf7cd5a44cc222d581949be51cfb592f4f6457991010f3bf1e4ca7e7e432682a2c38e8c6cd20446f54132fc27bacc3e13b886b6f3381a8c2082a5a1bab82be781f79ddc522a92098539157fb60acfce248c1ffe733d8952ed0a8a1e823519e85995cbe4fbd3de307f63d06816ed82ff2882b07e9b95e69749f2f75644196f125a18ff804ab758714777989d06e880ccc18e31d332cd86fbc0b586b2001716d77ee97f8e5b7b11a9b59023d911c6ba9990a5374a7594dd22d2bd26b34ceb0cdc90b8f75b709a06522a9c2ea61dd10686eb8648bd5cd84478742c5b82aa47444421fdaa29ce1c35fb192fbd72fc01ec9cb5649e1052446546d9536cb614e21a8bd7ce601ab360f43319c5acc7687036e5a68d122e987c060cfc7b0c0efb302f4a97698db6686424544cbefbacf1b130031d0095a6cf2630f63d67f8acf3cc2c7e8bc77c41d481f7f462f27caf340911dfd4072e114dbc54ba6893866f0348352537226a61148b21b9f785041b51382b700bcb682ce7040a339b7d71106d161aaabb94422819a7576e2f85da139e333a3249a287c9755eae772a80563a63fb51f07250f277cb0d1a938860b1f4174405ba91847abed00a8af520132253dbed334cb3f8eb0f0e7f06557e420abf66130e20aa9b6ed0e00eda5503a265e961816c2181bd93e70aa0a1f4e43c5da51bf2ec6fe5f031e18495e64402b3754fc72e63b22c87868935348c725640b4847e195d68381b0de21322278af7c55ae21dcd02c7ebdba15aa718d2b446f25678310b63e6516b809ec14d7731bcd0009559756100000000000000cfe5ff8c9bf8a86c0cb9a1594b5f06f6238a99edefa06dd4b54b01a27f9869cf9c62b945a38e3e3c6663d0d17581fd084717dfa334a9cec29bf6ba0a5fd0b335b37ccfec3a1b0a9400ccbaa7db7316e69867514aba830a5adffb621aada43607edc3fcb4ee001a588a1697a7435aa91737e6f54764c2975d7f9c96c0feec667e5fbb1bcc3866ce10adf2cc459864b60e18b161af38eae7658782c5f31f31e4775543351b38a0aa1bb40af46a3e2c1f17495c6851267a611b6e3d3e14116dea19000000000000000072c5e3172a50a61bd049f7076a0738d585be3c34727995ac3f44829aff068473adae2c1efb7d836fea9eed6b46a7a5094c1c45b1a9046a8189b409bc1f4f7289cdb9957be9851e04b856e97b020c6ed8888e00c6ed5903e0a842caa95cee38050000000000000000d0f9ffffe9000000b1faffff10040000", - "fnName": "unstake" - }, - "gasLimit": 50000000, - "gasPrice": 1, - "id": "b54df6f798c808cafc058145858bffa293e6da0be0a57b3fc21dd194d03ce60d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "d961bd8613537aeb409352afe8862353511b6752c465a5d84fdab3bb61389b9f", - "blockHeight": 6140, - "blockTimestamp": 1726091501, - "err": null, - "gasSpent": 8220422, - "id": "049f019b09a4d734ce5c6e00c55d6cb6657c7d5cfe36f7b9d6a54524fcfe9057", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "7ac32b7b5c74076d75fd33b6e406a8193660285d01624999d969a842681e1800", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4aca0eafc99a75af3693be7185782083e02fee609d3038af7eb767ccb4950c11", - "blockHeight": 6138, - "blockTimestamp": 1726091481, - "err": null, - "gasSpent": 8221117, - "id": "f03a3d7445e0478117c7e876bdbb31ddf226261fbab17ec91643705c648caf64", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "b697fc2d7d77f1b9e68bf7297193e8c24ce2ec34c7bab3a97d1ae2c559b48804", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4aca0eafc99a75af3693be7185782083e02fee609d3038af7eb767ccb4950c11", - "blockHeight": 6138, - "blockTimestamp": 1726091481, - "err": null, - "gasSpent": 8221243, - "id": "a91588f345a19ab5cc5664c2ba70f218f15628ff8d44f6e47dc3cc46fa4a8422", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "bfbcca9ce0cbe499338818171e272300dd0c4a12f81d5e843f8b3439e6a8670d", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4aca0eafc99a75af3693be7185782083e02fee609d3038af7eb767ccb4950c11", - "blockHeight": 6138, - "blockTimestamp": 1726091481, - "err": null, - "gasSpent": 8220989, - "id": "594972bfce77817adfa970435b3437fdde5dff721091397675ba1c457a455f22", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "332224bcf8f9bb2eaea845eb6fb0ea22eb84a65702736047aaa5dab8d7e4f406", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - }, - { - "blockHash": "4aca0eafc99a75af3693be7185782083e02fee609d3038af7eb767ccb4950c11", - "blockHeight": 6138, - "blockTimestamp": 1726091481, - "err": null, - "gasSpent": 8220846, - "id": "090fd1fdc5a8db6660157383e670ad60cba307fd6adb4c1ec6bd5a8318757855", - "tx": { - "blobHashes": null, - "callData": null, - "gasLimit": 500000000, - "gasPrice": 1, - "id": "c0167a46e072ef79aa982d73d2f3cf9bff38ee3da8513c95326e7b2781119e07", - "isDeploy": false, - "memo": "", - "txType": "Moonlight" - } - } - ] -} diff --git a/explorer/src/lib/mock-data/host-provisioners.json b/explorer/src/lib/mock-data/host-provisioners.json deleted file mode 100644 index 85a231e021..0000000000 --- a/explorer/src/lib/mock-data/host-provisioners.json +++ /dev/null @@ -1,2594 +0,0 @@ -[ - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "m6dy2gz3jC3ifLpZmdTaZbgcptWxRrfnQEZ8hG8ewhopKXTcCTnTqs4UeucXFkcSuFMfTqMzT1Go6KfNkuFvJPvsrvp5vKxEccuJNUgMi1uSCne1ti5kgYeNHtW82FWtnpf", - "locked_amt": 0, - "reward": 7121257296087, - "owner": { - "Account": "m6dy2gz3jC3ifLpZmdTaZbgcptWxRrfnQEZ8hG8ewhopKXTcCTnTqs4UeucXFkcSuFMfTqMzT1Go6KfNkuFvJPvsrvp5vKxEccuJNUgMi1uSCne1ti5kgYeNHtW82FWtnpf" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "m9dVuRgr3CQX5P5Fxh2t68QRhRFBZFWroUM9Do77Xusc6ZuJHfj4xhPokm62bFXw8WrA2Lq7dkJcFSEGHKBvVxJ2TmZBJKBBjzhEXtCP7UmZ9qF734nJJhb2f94r33pFQyz", - "locked_amt": 0, - "reward": 6923840604194, - "owner": { - "Account": "m9dVuRgr3CQX5P5Fxh2t68QRhRFBZFWroUM9Do77Xusc6ZuJHfj4xhPokm62bFXw8WrA2Lq7dkJcFSEGHKBvVxJ2TmZBJKBBjzhEXtCP7UmZ9qF734nJJhb2f94r33pFQyz" - } - }, - { - "amount": 4800000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mHGvQ9XdjzuGyixBGrMeeC7EdX9QZNWV64FQWWwTMhFYmdskMbZkQMGiKC3DXqx8ALS4ipC3TJ9NckHPzD7AC1Tfc1GH3TrCxAZ8o93rPux7H5V95Q3hPxdxHiTfxTvgn7f", - "locked_amt": 0, - "reward": 89505343279, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1234000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mLx5HUo5PhsobwgMJhzL9j8TY7TjC13EsxHL7cKLTmMJ9BqvnG2RttD2uMg1FEDprnSvmN7BwCkpr6wW9XSco2ASrUjou2neUXj4uq16NreXVk4jmfr3CEHqvBrRgEzoka8", - "locked_amt": 0, - "reward": 29633646022, - "owner": { - "Account": "mLx5HUo5PhsobwgMJhzL9j8TY7TjC13EsxHL7cKLTmMJ9BqvnG2RttD2uMg1FEDprnSvmN7BwCkpr6wW9XSco2ASrUjou2neUXj4uq16NreXVk4jmfr3CEHqvBrRgEzoka8" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mTgXDqkyVacn7zCgoJfk7rKMVbvKhxfG1WD3jcXaXXdmUwiDouhYvGTGgVtYqW7MsvbKYtpFMKDRkJNJ5BWRvkP8TLHf2uz1XUuPU7cnz5nRE4uXaAhpCPPSjgAseybAsfU", - "locked_amt": 0, - "reward": 7518756679536, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4800000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "mUJHMDEBiTUVJU5U76Krb5wwMXK6R7CjBrTTGFFAZzgwnasxspJMbcUjedRsY8TbrRfxCuyhmvgb7Kv4chjvHNDsyWA6J8XTSCPH4y5PeqLyLvCCdgUnQ74FDFHNxRNhoAA", - "locked_amt": 0, - "reward": 73800637305, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mUUpjnXow2LHwm8a65cJsckTeQz55mRem6Vzo5VjZDbANnCoDKAFWESLiAPx6WUYcuosbSpYSoRm21amChNuLu3gqA2zo9VXdPNYNkfq8pxrsre7jNbLdDocqSfzQcywzaW", - "locked_amt": 0, - "reward": 7653541671166, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 8640, - "faults": 0, - "hard_faults": 0, - "key": "mWvq9EWD9b8gQw5uD4GnYaV8Wsn86youaZ1ghCjwTkTyghBnrMz1tGdwKRnjd3svKQE1fMxfdu6M64pEN9NCUhcbwrER4s3HKpYGEp4m7pfsBMoDjbYzTTUxooU7BY2oEDe", - "locked_amt": 0, - "reward": 1613840782, - "owner": { - "Account": "mWvq9EWD9b8gQw5uD4GnYaV8Wsn86youaZ1ghCjwTkTyghBnrMz1tGdwKRnjd3svKQE1fMxfdu6M64pEN9NCUhcbwrER4s3HKpYGEp4m7pfsBMoDjbYzTTUxooU7BY2oEDe" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mXKJ97xTtrSPzxWHBKPurUpehP1yPywcPVw554CCFhMtEL4Vh6jQTmFgqQD416xScqwEix5NCQwfQ9BAh1pkp3Fae6BTG5FxGyMEiP3VDzeUPuXjqaC9dp6H7JgkCK2o7x4", - "locked_amt": 0, - "reward": 7512060104659, - "owner": { - "Account": "mXKJ97xTtrSPzxWHBKPurUpehP1yPywcPVw554CCFhMtEL4Vh6jQTmFgqQD416xScqwEix5NCQwfQ9BAh1pkp3Fae6BTG5FxGyMEiP3VDzeUPuXjqaC9dp6H7JgkCK2o7x4" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mdXsA3Ee1YDt1aTcvUg7AKpzTKgJBoUDpvSRYmtZhM85dLBZN6VPYDd4BzFxLMo3RA2XKEc7t3nfipBcKQHbgpCqSZTZEZz8ohhMzqjDfvepuR9FPWCcJQfDwK8VZPimZ2J", - "locked_amt": 0, - "reward": 7973118109253, - "owner": { - "Account": "mdXsA3Ee1YDt1aTcvUg7AKpzTKgJBoUDpvSRYmtZhM85dLBZN6VPYDd4BzFxLMo3RA2XKEc7t3nfipBcKQHbgpCqSZTZEZz8ohhMzqjDfvepuR9FPWCcJQfDwK8VZPimZ2J" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mdca2ea2KpRZaW6s6NkYAY29wbprGPGGo8MmB812HxUXcvb8dDDE8J4GjN9VH9FbB8GJdohgFKoK2oDFLyL5cCsDtPU1maWw1o7Xnzo7uHBPg8MmRfxyBCUVRji7SxM2zBD", - "locked_amt": 0, - "reward": 7091398997002, - "owner": { - "Account": "mdca2ea2KpRZaW6s6NkYAY29wbprGPGGo8MmB812HxUXcvb8dDDE8J4GjN9VH9FbB8GJdohgFKoK2oDFLyL5cCsDtPU1maWw1o7Xnzo7uHBPg8MmRfxyBCUVRji7SxM2zBD" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mgmcqkk1VFfsa1ko7ydBjhVuM9WuVFDGby9JthvDWsKX9kyqdNeqrSzbW1ccQ19sVfbHgVzfYwdGLipYdPcU4ZD5CjsbRmzZeEQ3WBZHUcEWDB1wsvV5avoC2xddxLvEDVP", - "locked_amt": 0, - "reward": 7373189839389, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 0, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "mvft6AXjR1mDtg1Qo3GzGBKZAvvxY1S6h41DSEPh9Ewj9GFR61rPQnjVaM1W9nqkHijRC2d5Yo4FSBwU8wf9eHeEJYXuMSrB7eJxvsY6HjCeDJ9pKfJLdjayAfrxEyudvx2", - "locked_amt": 0, - "reward": 104743439448879, - "owner": { - "Account": "mvft6AXjR1mDtg1Qo3GzGBKZAvvxY1S6h41DSEPh9Ewj9GFR61rPQnjVaM1W9nqkHijRC2d5Yo4FSBwU8wf9eHeEJYXuMSrB7eJxvsY6HjCeDJ9pKfJLdjayAfrxEyudvx2" - } - }, - { - "amount": 4550000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "mvsVWvCaiHtugFDx1VmDCX5Zeex1u1768EWuMYBF68czYLbJ8rtaxBbqKvLJJsCD9xEDmLm2STduJsb2j11VEsT7ZUGBzAURd8884zUMDyeWVgrE1CfbGCaYvcdeSzHCUUb", - "locked_amt": 0, - "reward": 75588259150, - "owner": { - "Account": "mvsVWvCaiHtugFDx1VmDCX5Zeex1u1768EWuMYBF68czYLbJ8rtaxBbqKvLJJsCD9xEDmLm2STduJsb2j11VEsT7ZUGBzAURd8884zUMDyeWVgrE1CfbGCaYvcdeSzHCUUb" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "n2DPucZgNznPCfhRfAS8aHQUktJYZ99wAUcYM5Qijs7XyENoF6w1bzHuHdX9duEcZTX1X7o7tX9UkFF35AE8JzdbGqN5zYNAnyGJXVogBzbDNKwS6GhaRRR9f95PUxRwtD1", - "locked_amt": 0, - "reward": 7127318018509, - "owner": { - "Account": "n2DPucZgNznPCfhRfAS8aHQUktJYZ99wAUcYM5Qijs7XyENoF6w1bzHuHdX9duEcZTX1X7o7tX9UkFF35AE8JzdbGqN5zYNAnyGJXVogBzbDNKwS6GhaRRR9f95PUxRwtD1" - } - }, - { - "amount": 1000000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "n3qToJrMkYCnUkJkFG2a7fEVn2Krj6arVUfuQbZNRk4gcDPQ9jESngvKQGZ4XToGAhS4qFsGzJtiZzDJ5E9TyYA5SZcCJGYfi5cZWBJkzmAmwiScS256TCMZZjmEq6aNuj6", - "locked_amt": 0, - "reward": 12178759788262, - "owner": { - "Account": "n3qToJrMkYCnUkJkFG2a7fEVn2Krj6arVUfuQbZNRk4gcDPQ9jESngvKQGZ4XToGAhS4qFsGzJtiZzDJ5E9TyYA5SZcCJGYfi5cZWBJkzmAmwiScS256TCMZZjmEq6aNuj6" - } - }, - { - "amount": 4777000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "nEWqKGKsew4zQMYPCYpdkDXdE4USkvPbH4sZkS6f1LuoLRcfWQ3oxPjaFN1mHc7xdw6DbNwzELF8TzqFyKhnxeG1SkBAzy3qFxKk5EkzathBRhUS6662v8fx8zixV2eXKwR", - "locked_amt": 0, - "reward": 20921406738, - "owner": { - "Account": "nEWqKGKsew4zQMYPCYpdkDXdE4USkvPbH4sZkS6f1LuoLRcfWQ3oxPjaFN1mHc7xdw6DbNwzELF8TzqFyKhnxeG1SkBAzy3qFxKk5EkzathBRhUS6662v8fx8zixV2eXKwR" - } - }, - { - "amount": 4000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "nKfphGtCdB6YDbRu1dVSDHqqKa7LwJpcYg9NhXxHpdpPaQqePqYzQXkVKJFXCqp8QD37Sv9s9gR8gkJtrAB14CnfTr386JpP4BtwqUbUnyNt73EJhzssH7GxrfL9N8Nn9Cv", - "locked_amt": 0, - "reward": 59295171436, - "owner": { - "Account": "nKfphGtCdB6YDbRu1dVSDHqqKa7LwJpcYg9NhXxHpdpPaQqePqYzQXkVKJFXCqp8QD37Sv9s9gR8gkJtrAB14CnfTr386JpP4BtwqUbUnyNt73EJhzssH7GxrfL9N8Nn9Cv" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nV71a9Hec6jeXVFkUN6JvgiLDTucp1R4g6GewvnL7nYLbRrcxuPtFHt2PNjApDaLXLKTBEEwMdefjnQgKtBFaJAtA1jxkF9K2EKW1nBea26cHcvb326rbXNgYA4pNWv4roh", - "locked_amt": 0, - "reward": 6731430572710, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4950000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "nWDih3TSkrMG1X4BG8A12BRQcrqdV5rd1YnCyieromYEcJZ8F8Ep3tA1DQyGFoAudgNVRwMBT5ZcmkMnG4aFgTh6DAonSun8WdnQtvCZUDAUWjSx7JoH4oD4N8qkWoiuy9X", - "locked_amt": 0, - "reward": 76267293927, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nXqyaSYaTas47KNqNwVtpNyfCsTmvYMQ2bXcmtpVbiuMLn9NsE7SwsJFq1bLh9jtwRSN7Wkg7h53DV1DSdEPnD3dwsMxy4hmYaiRmeqGw9z6tpqYcyaGWjURkQpLqoCPDeD", - "locked_amt": 0, - "reward": 7428022676833, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ngmrqKGVX91c5aAWjzpEhfGdTdMkfSacDvZRR43Ptu4whfW2yzJvy7UwzK4dBfUhn5o2eLnZWyoaJwuaTn9eDSUN8WtaULRr6v8dW7qRqUowdeJKLbmNXszxRgbBYoTgYKw", - "locked_amt": 0, - "reward": 7106713975923, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 20000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "nhBn2phxNgSd9AmuzGzNvzk5ysQ2x28MwpYhNTk1qijTy73XXnB6oXk3hWgH1AJEApdzBRRa4UGDxqbhDWAGmSjdikR7EzPaXhCBUgyZ2gESgEEu9MCK1VT1FFRGwEwKrgS", - "locked_amt": 0, - "reward": 44420016168, - "owner": { - "Account": "nhBn2phxNgSd9AmuzGzNvzk5ysQ2x28MwpYhNTk1qijTy73XXnB6oXk3hWgH1AJEApdzBRRa4UGDxqbhDWAGmSjdikR7EzPaXhCBUgyZ2gESgEEu9MCK1VT1FFRGwEwKrgS" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nkKb7ixLVJULE9WFufo5hb11Ggt9ako3tabHesmfTb1uDDHGscKKcSn4Cid8mbnFuRfJurrDwdi7ZPMUfDR5jkWMMC4GqBPaNU7Fka5LJhjQQmJVqmJXrbTMRMijWvB1p3Y", - "locked_amt": 0, - "reward": 7285963056286, - "owner": { - "Account": "nkKb7ixLVJULE9WFufo5hb11Ggt9ako3tabHesmfTb1uDDHGscKKcSn4Cid8mbnFuRfJurrDwdi7ZPMUfDR5jkWMMC4GqBPaNU7Fka5LJhjQQmJVqmJXrbTMRMijWvB1p3Y" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "nvdsjA8biVgXQc7fFYxJwZAY7AM1wc8YqYNQ5fFe8NYQZnVHSRny6yQadz5MNXzsCYhcFHDAGqrgVRDKoPNN41Z2bwy57SZwCXSBrx3SnjVbefrRXzXAEuHMfUEBBtq8gzH", - "locked_amt": 0, - "reward": 6683887630176, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "o6Ckan2efbGTbJRSgzM9vwK5z4fTY5AFr3WqWTRNVL8dsXxEBkEqa4wsHs6g3ARWZovFVEkV3r1HJZbhLWK2vC8xBarMRKifta7xZNeprb5xUFpjeS3ekF9VBsnKPbwTtP1", - "locked_amt": 0, - "reward": 7033101699593, - "owner": { - "Account": "o6Ckan2efbGTbJRSgzM9vwK5z4fTY5AFr3WqWTRNVL8dsXxEBkEqa4wsHs6g3ARWZovFVEkV3r1HJZbhLWK2vC8xBarMRKifta7xZNeprb5xUFpjeS3ekF9VBsnKPbwTtP1" - } - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "o73g7mTw89CmomkXJMWB4DGVk1fQZRcdty7dyWV8ww6tL3B35ntiN7fQzLvhoiMbuMm6e9WEhFNevwrktUZPesednKyPXdN1V2AcKv9f8SG9awTmRYhDB9XhJqDP7ikcsmv", - "locked_amt": 0, - "reward": 103124193866, - "owner": { - "Account": "o73g7mTw89CmomkXJMWB4DGVk1fQZRcdty7dyWV8ww6tL3B35ntiN7fQzLvhoiMbuMm6e9WEhFNevwrktUZPesednKyPXdN1V2AcKv9f8SG9awTmRYhDB9XhJqDP7ikcsmv" - } - }, - { - "amount": 14500000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "oE6fewnMgBQSMQ8CMefzpqz4Hh5d6CT4XYiYr5QznWdh4n7ktRxWkxi743fQQ1eW9J3BC6xYBJ6tY587uGxEyATUjNeE432J5S8cq86FeiRYSsJJGvU2v9AchPT2v7Ff58T", - "locked_amt": 0, - "reward": 111241019205, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oUgxBUWEPyFAekXW9T2UdJBcMF7xAuBfstrCX8ATXFk7MusqddFGoq2LN9euCbwVuXpSM5rGLKNUb6NVPFUVM5g4pA6CnXjNfNVBiy91NcH9eBVcdcG1eYUaKWQSYQ9t2um", - "locked_amt": 0, - "reward": 7692155365422, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oXYZWNZwxdDnd4e8qUE9gQUzcAZ1NzcBuhj9bjKi3kE7doyRJ4ixeoerFU8eM8v98C9gmFK2vJ67MdocCKKEexUXnoyyjUWYuNyoWQXJKGPK5EaZYo45Up2y2dqTG56KMqH", - "locked_amt": 0, - "reward": 7080100061688, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "oZPYzFzebw3jLfvVY66FhMDmjdMyRCDpXFLsMHXShigAD9LGH7vA8uixxyd3Km7ck3RHMXPi7S1B9Sej5934hxCajhu8ivbhBVwBM2FEA5UmKfRJSngqWA8fDBWqdennNj2", - "locked_amt": 0, - "reward": 620543720, - "owner": { - "Account": "oZPYzFzebw3jLfvVY66FhMDmjdMyRCDpXFLsMHXShigAD9LGH7vA8uixxyd3Km7ck3RHMXPi7S1B9Sej5934hxCajhu8ivbhBVwBM2FEA5UmKfRJSngqWA8fDBWqdennNj2" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "oZR6eDvW1ZQeqqDeegV9eaWMsxmVeWkugNfisTNUkiD8ecHpQbEHPSn6knvCsjxS94t93Pig9JpjZ5zQrujdtWhJvFpGiLFWFpCThrJhCFpAa4jZjKkPwAZCwQSoeehg64r", - "locked_amt": 0, - "reward": 7149826226361, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "ofpeGL63Gwsmri7qn7p85s9a9WMeepjypWvznBV4Z3CrV5fXKVujjPbAw2rSLp9upfF3bNEMspnfKYoBv3SoQt1X618TZtpoEbN4JhAsYfvaq8D5rs3ch2HESWUVk5bhNSH", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ord8D9WF21NPJmaDc3hN9wLnqRTcNsLwFVwUNZW9JuYmQhpbotxrBKXD25M4w76GXbTRS8nmr8y9jmriaw5tp2yhXLBHL47DK6S2eug2P3K5fYgCcJHEU2suaM8SaCTaek5", - "locked_amt": 0, - "reward": 7355095596398, - "owner": { - "Account": "ord8D9WF21NPJmaDc3hN9wLnqRTcNsLwFVwUNZW9JuYmQhpbotxrBKXD25M4w76GXbTRS8nmr8y9jmriaw5tp2yhXLBHL47DK6S2eug2P3K5fYgCcJHEU2suaM8SaCTaek5" - } - }, - { - "amount": 4550000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "ozZES9sJc2KfPDM4ovagzb6PrVkftgGmsM3wsamBKCgPWAtn2zV2Hvx55ToWcxektLCQw89na4U1DxvDUPioFSkJA3CtR2tbMtcU2PuYiKnCNcRrBuXFtmoiLcRzBqSZXJB", - "locked_amt": 0, - "reward": 90404117665, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "p4tLgEbhB1YGpV75jStoKCeCaD41yvYopK11rZW9XxX6BepfcAtucZYFW9kjCfGXySTYsAkumEhdeLMbDfHjyF42FEhPWeQ7vGKVrcg2cZmGHdnC65L5v5fP5we9c6Cx9W2", - "locked_amt": 0, - "reward": 15251767219, - "owner": { - "Account": "p4tLgEbhB1YGpV75jStoKCeCaD41yvYopK11rZW9XxX6BepfcAtucZYFW9kjCfGXySTYsAkumEhdeLMbDfHjyF42FEhPWeQ7vGKVrcg2cZmGHdnC65L5v5fP5we9c6Cx9W2" - } - }, - { - "amount": 1000000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "p83QocPcuqMoEYuRpaLiGciwKGzUMx9VXF9WRKJu4Qb5d3hEvY6VTPB5RTJMRF3imMPAUo2KoAtve3Z42EFo2nA6ZoCvtynG5q6ASJCmxw8Sh8Yn8ArQDpJp9Zw1AXquwaN", - "locked_amt": 0, - "reward": 356812639, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 40055000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "pAsCGjoiMA2vo1TRxzsxjUvtQcKVd65skAZSU5gr2Ux9u42t8zWgv66rWP2fe6vYDPmXEF9stEvcjw9NdJxmVLfGGueDqgmZcLXhyafoRC4rrgRkMfUPHmoXvzEqmVdZnHv", - "locked_amt": 0, - "reward": 96089500925, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pFPEcfxidLvwmFKRQoifrSyWmmVY9UDEThoRFvGXddXRLZ8hB7xfWDYQYwHhTvZvXeL1p5Ygcnsuuxm1X8nHFJH6tEgK3cS76squcFVFSejaKJGMorYZdTup5uscNq6eDU2", - "locked_amt": 0, - "reward": 7079306672353, - "owner": { - "Account": "pFPEcfxidLvwmFKRQoifrSyWmmVY9UDEThoRFvGXddXRLZ8hB7xfWDYQYwHhTvZvXeL1p5Ygcnsuuxm1X8nHFJH6tEgK3cS76squcFVFSejaKJGMorYZdTup5uscNq6eDU2" - } - }, - { - "amount": 1000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "pM2PKWckAPFM22QTDRdTz8PQXMhLpxrEFog9LHBVsX3wJLog7eebNc9ASyvnF8Y3UV3GrT3GqWNMU6BsJejvroaxm7drNGmx1ZqZ4ViJnUqUDr4DZXwc92u2oxjG1DYuvRD", - "locked_amt": 0, - "reward": 14614232388, - "owner": { - "Account": "pM2PKWckAPFM22QTDRdTz8PQXMhLpxrEFog9LHBVsX3wJLog7eebNc9ASyvnF8Y3UV3GrT3GqWNMU6BsJejvroaxm7drNGmx1ZqZ4ViJnUqUDr4DZXwc92u2oxjG1DYuvRD" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pSnJHur5tnA4V88MGPBDCfPYSfSCGynJmbycW5mNeisABxgmZLErnfLuS5vvC6hBD3NKFvdCBhmNv5H8EzTAd5ApavNZeCoautkCDW4KUB8Ey6LNyHGCX19j9TLG8kPdKhf", - "locked_amt": 0, - "reward": 7141960968070, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pSy8VbEwv2v3B75yVkYLYsVjxhYbpNbKDnYwnBbrfqNPfYGUWj6SfDwnx9BKA8QWMGZCnKqWVv37USgZoEJppXZe37rb4qeBodQ3vqXLEqw1F7VaFpvN89pzZYpBEqqiQG9", - "locked_amt": 0, - "reward": 7027190914970, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pWf1wuUow5H95WxYtySqYMbzwY1xVS1FAj8WPXieuSBsYMgDJXNXzkHYhGLDW8v6J7qHNW5x5MSvyyvNLzUAJKsEr7udT4DDYZuUELERe2Q8jdR4a5t7rFpa7KQEJhf6bZb", - "locked_amt": 0, - "reward": 7256725536779, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 10000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "pgRMt3GMfwftnDQVCTZoXaVuty8Z4fkBqX28Jc5s4dtT63osdLAQaCFhQHNRKqVuyWoqeJa4Pi8fgnuLx8H9VtvJK4X5kiKSVTSwZUv5Lf7Tvnd2MQuQPvdKV8eyKGTPWds", - "locked_amt": 0, - "reward": 667084499, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "pjsbtm6iNLBbMNG4FBGqggEFsiF8Y1DUUYb9J3KYeeQmoVUoSNfRhztzQQds2NLZYgWDGuXnQ3mLtZDK7MxNnQmEY98hdjfTWyGAigTRC9aizgF8WFo7it6ySQQ9fF9Rhea", - "locked_amt": 0, - "reward": 7765311539016, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 3988000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "ppMLM6t6GLmZb7xzx617TTHQPdHHRNSfB8PjtGe8YNbWAo4BRYfnNYZxCj62pLY8gXZqsrx7TaBS17dRsHoE81wLHgMHaYoq2z6GHX7KAD5TiRcX1w5ctiSqV3idx3SJdAe", - "locked_amt": 0, - "reward": 32534699326, - "owner": { - "Account": "ppMLM6t6GLmZb7xzx617TTHQPdHHRNSfB8PjtGe8YNbWAo4BRYfnNYZxCj62pLY8gXZqsrx7TaBS17dRsHoE81wLHgMHaYoq2z6GHX7KAD5TiRcX1w5ctiSqV3idx3SJdAe" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "prV8r1A5oHHyMGuqvsyVP4eMfaqbYYtzKvfV6phwHMBNKaDnRCy4ntC81QGGS1dUDyqu6EuNamAEHZpR5cWWQkHvABrADkXs1fDbNqKtisEAnVjBj46iDJdQ7ck4vGs69Td", - "locked_amt": 0, - "reward": 6947252201599, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "q3e51AKaDByuyB1nM9fYpcgafrmZ52T3caoMkVD1iDcLQJaXUcSpNEiwvuTs6hc4EcMubf2wp3axfkGZgkgBG3FYZ4eaHxeB1gDbEWS6V2pPBrqitRXisURnNRnKk9T841F", - "locked_amt": 0, - "reward": 6998409757231, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "q82TZ6oPSPK8F77ze6DGzwYQeAbc8mH5FXbBbcah7nH39qLCm25yvpnHz2mLvPUtsRYSngortGac683sQtMYYARotWuUBYg66igFeR2fECu1zW7a83dMCxE3EdZYuYrhMoq", - "locked_amt": 0, - "reward": 15188235399, - "owner": { - "Account": "q82TZ6oPSPK8F77ze6DGzwYQeAbc8mH5FXbBbcah7nH39qLCm25yvpnHz2mLvPUtsRYSngortGac683sQtMYYARotWuUBYg66igFeR2fECu1zW7a83dMCxE3EdZYuYrhMoq" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qHeUtHGi27ZRFHyBimKF6fHCy8B3mr2VShAkfk2ifkb8HAwD8Gr7Zrq96F9s5G4VWFUSbaUVcCBnExnumHeoQqfjRp52CRfzXDzkBevUG2CVtGqUvGGV1DxsDAEXHhCyXbX", - "locked_amt": 0, - "reward": 6938110125794, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4900000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "qTnyKiDC7ou7aELMngJCzWNBP3qSo9DRwDE2cjPr34ck4UKbqxTSL5bkDSHyKRJ22o4Wgqwu8ZnZ7ijfQcQGtsFtmajYqToc3FbQ6VxpFpT52snvhXb6BtotruZtC2pzTMN", - "locked_amt": 0, - "reward": 47493792295, - "owner": { - "Account": "qTnyKiDC7ou7aELMngJCzWNBP3qSo9DRwDE2cjPr34ck4UKbqxTSL5bkDSHyKRJ22o4Wgqwu8ZnZ7ijfQcQGtsFtmajYqToc3FbQ6VxpFpT52snvhXb6BtotruZtC2pzTMN" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qWpfeFB4BB6RLCWdAaeHcq84BfeXKFh3woQFUCGc2wnCMyh5bnzofBMxm63Ns6fe6QuFUmRj7reyJVy958pwb9h4yCh97QfkKvmgtdyDxamD1UkeX9Y55wRGTSgdugosLLc", - "locked_amt": 0, - "reward": 6554033459794, - "owner": { - "Account": "qWpfeFB4BB6RLCWdAaeHcq84BfeXKFh3woQFUCGc2wnCMyh5bnzofBMxm63Ns6fe6QuFUmRj7reyJVy958pwb9h4yCh97QfkKvmgtdyDxamD1UkeX9Y55wRGTSgdugosLLc" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qXCkaKuFChiPXXzU8Zz4RHNAygDmHFBSbBiCFhtiqMtVXdhv7DbiUtFjoyaEFvfDuH2yJ92Lbbydyg1onghEi79HcVfMxwJksAFPJk3qgXFGutvWv5JCMPmujTkwY1MdMfv", - "locked_amt": 0, - "reward": 7171782082614, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qe2tbCK8cBBwPLEwGNWmaJWx5cZ6Gkf4mUAdbPU16PMa7GkuMQFBg1JK77qXo8oQHhJM59Yr3xoSUdBKNgeQXGPybd13pyDWTNCjTXoa4fsg8G6nYb4vHKHngPy4fAg9WuA", - "locked_amt": 0, - "reward": 6742685385399, - "owner": { - "Account": "qe2tbCK8cBBwPLEwGNWmaJWx5cZ6Gkf4mUAdbPU16PMa7GkuMQFBg1JK77qXo8oQHhJM59Yr3xoSUdBKNgeQXGPybd13pyDWTNCjTXoa4fsg8G6nYb4vHKHngPy4fAg9WuA" - } - }, - { - "amount": 450000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "qeNnTyhWnvJBxSX8D5YS5QCLAtPoZQFCKEHVJoGiDTyFiGz6jnRuz9erafZxLSfWoJNwfz4HoHmKXBfcifHcF8F2sqG5LFSNopLJbkZzGXLaUFFikme1f1PiNiMxxMNkmqP", - "locked_amt": 50000000000000, - "reward": 6350603533289, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qier5uHrps512yKXMiLXL319rT5dzwu7yeEfKi6ze5w6kCM2DMfdtW7TqcXdzPZhAB3tNAZ1Hv7Q2pARF6hnyusjdxVwN4zLoPQS3wsGMZopVXKXUqm3DySD9kzqQQFej4c", - "locked_amt": 0, - "reward": 7324165325785, - "owner": { - "Account": "qier5uHrps512yKXMiLXL319rT5dzwu7yeEfKi6ze5w6kCM2DMfdtW7TqcXdzPZhAB3tNAZ1Hv7Q2pARF6hnyusjdxVwN4zLoPQS3wsGMZopVXKXUqm3DySD9kzqQQFej4c" - } - }, - { - "amount": 2000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "qpJaJG4yqMuvoasorwb3YKXGQnBLqsdRHWjVnj3cz4MQCS4Tp8hbxDwdz2gx8N7uzy42k6uEGExzkn7tcvnJufaC42agLULKffRMyybrWfXBX1KUcPGQXHAQ4UabkrACPK4", - "locked_amt": 0, - "reward": 15050402114, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qqoRXtqcJux5mNH5UaWp2WVdqg8xmAS9PfPUKLdEt24HKcj4SazPx59ctn23M1FskJBhxFBfnuwbrsDjRRJxEZynZLSaj6L4JUuGXMrtfFyxzL9mEUuWrjNk3egCTRkbz3Y", - "locked_amt": 0, - "reward": 6915066298205, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "qsT2E4s538wm9c2L53aXyNEzm5hNdyJ1zbD2jRs5hQZXVu55hD5nLVTNi8URnDcCaT14mNUdQTqQt7krWPjHeGxCjKyyQcdTpcHDzJjwMeAdHNRbUoWgoXzrFeEym48TRUM", - "locked_amt": 0, - "reward": 6968405512419, - "owner": { - "Account": "qsT2E4s538wm9c2L53aXyNEzm5hNdyJ1zbD2jRs5hQZXVu55hD5nLVTNi8URnDcCaT14mNUdQTqQt7krWPjHeGxCjKyyQcdTpcHDzJjwMeAdHNRbUoWgoXzrFeEym48TRUM" - } - }, - { - "amount": 4900000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "r4tt3NG44HnikAUPRCFNy2PVt6UKXWckvQMW7wGUX2qDbRyv5JaEWG64b4qk42Bo1mZ4UbD5gATbNHKxFMZFWD3c8p8FRmJG4yf1CpM9ZNdfL4quCGtvtRTqNTi8mdhMZK2", - "locked_amt": 0, - "reward": 104832296009, - "owner": { - "Account": "r4tt3NG44HnikAUPRCFNy2PVt6UKXWckvQMW7wGUX2qDbRyv5JaEWG64b4qk42Bo1mZ4UbD5gATbNHKxFMZFWD3c8p8FRmJG4yf1CpM9ZNdfL4quCGtvtRTqNTi8mdhMZK2" - } - }, - { - "amount": 900000000000, - "eligibility": 25920, - "faults": 2, - "hard_faults": 0, - "key": "r5cYVShkE4def9ZwSidnL6KDUP7JaDL65jpefjrMm7gqx1j1Gk5Zww49z4Dna8qDA4GSQSySmMkDZTSFNv6dhtEY7N8JTDCp3Tuu7gSfS67Gc1BKS8XVh3LqjwkDWEBmUxc", - "locked_amt": 100000000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "r8bBMqBn483hgwLsNJy4Ck3oVFTxdU7br2RKT7UGWcPbaUoMxv6V3qUtYdzwkeWhVgRa3AfLTDZ96xu93XM5YwwvHHqUnGVESBkhBPNuRnwmNyUema2bykezc2BaJe9EpNb", - "locked_amt": 0, - "reward": 6886237514739, - "owner": { - "Account": "r8bBMqBn483hgwLsNJy4Ck3oVFTxdU7br2RKT7UGWcPbaUoMxv6V3qUtYdzwkeWhVgRa3AfLTDZ96xu93XM5YwwvHHqUnGVESBkhBPNuRnwmNyUema2bykezc2BaJe9EpNb" - } - }, - { - "amount": 4500000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "r9Vbf2N6mQ1feskB4H5YKDZcN3eak4S6aPPZxhmXtyYd7T6zKVCCeGnvUmJizWJ7C75K4WHM1X9hjCaibDSYEskG12yftf5ezmiJEAP63YrjgSz3piS1mG4qEztyB2UCbNs", - "locked_amt": 0, - "reward": 43593937160, - "owner": { - "Account": "r9Vbf2N6mQ1feskB4H5YKDZcN3eak4S6aPPZxhmXtyYd7T6zKVCCeGnvUmJizWJ7C75K4WHM1X9hjCaibDSYEskG12yftf5ezmiJEAP63YrjgSz3piS1mG4qEztyB2UCbNs" - } - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "r9yn7nYTELPBLbx15arphaTFezyjCVaBTTAHGSdeRC7piHac9PGkUS9qm7PXZvukLjncPdxAznHSSzb8ngu7iJX5wNdqEK4TnN1P6uxugwFC4JcaH6vzgu4kRrCfySz6nSe", - "locked_amt": 0, - "reward": 116743536281, - "owner": { - "Account": "r9yn7nYTELPBLbx15arphaTFezyjCVaBTTAHGSdeRC7piHac9PGkUS9qm7PXZvukLjncPdxAznHSSzb8ngu7iJX5wNdqEK4TnN1P6uxugwFC4JcaH6vzgu4kRrCfySz6nSe" - } - }, - { - "amount": 4000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "rC7VrR2X35N4nq8c9o5xsT8buA3xwPu5WUavfDmQEyW59KbANGuHYA6LLwiWmDpfWhxuzmdV5PfpW6GGhrE78eBNjA2wP27pZWASEsbJfEVboF5ZUuvVKCiESwfVXypG279", - "locked_amt": 0, - "reward": 31014366707, - "owner": { - "Account": "rC7VrR2X35N4nq8c9o5xsT8buA3xwPu5WUavfDmQEyW59KbANGuHYA6LLwiWmDpfWhxuzmdV5PfpW6GGhrE78eBNjA2wP27pZWASEsbJfEVboF5ZUuvVKCiESwfVXypG279" - } - }, - { - "amount": 9900000000000, - "eligibility": 25920, - "faults": 0, - "hard_faults": 0, - "key": "rFiWhUsdEpsmGh4HSYEWZCr6P8NuQ732ye9NDVdrh49KWQYB41pTFnWYt2e8ujCotA1EZpZm6vGYPKABNiwF3bVz3c3fc9Zotxe6MhsG2fBYRc8Au4s1fnpPvGBzQHwRej2", - "locked_amt": 0, - "reward": 7415497601, - "owner": { - "Account": "rFiWhUsdEpsmGh4HSYEWZCr6P8NuQ732ye9NDVdrh49KWQYB41pTFnWYt2e8ujCotA1EZpZm6vGYPKABNiwF3bVz3c3fc9Zotxe6MhsG2fBYRc8Au4s1fnpPvGBzQHwRej2" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rSGm1CeKgLT7SeUWitc6XWMueHfcC1mg5ozjB2jWMANMuVUYze2b2k2mDYSoXqVL4ia5KUs3uyKWczDSMK4LGoBwWBewP22L2JeJMpbN9eZ39yG5AUfRKAvi78yGfXqeid4", - "locked_amt": 0, - "reward": 6870853163373, - "owner": { - "Account": "rSGm1CeKgLT7SeUWitc6XWMueHfcC1mg5ozjB2jWMANMuVUYze2b2k2mDYSoXqVL4ia5KUs3uyKWczDSMK4LGoBwWBewP22L2JeJMpbN9eZ39yG5AUfRKAvi78yGfXqeid4" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rThKGgPJkxRHUL9qCA97K6pW3RPDqprYjLHZiEb42bLYYPSxsbwd9pWFNdqKVZVhW7VtKA85gCs7SdwkENhTjhEvTe4NkYVEhBSpeuG5DdVBMm3mYf5gQvNKKiWhE29r5rV", - "locked_amt": 0, - "reward": 7893306567778, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rdHa4H5p1rVtQyqD5AjDHyr1EGg7yVU1wynqQ9VRqU8Wp7kMcePsSk2tURGzRLnzS36CaKEadpfRGwa3ucvFH5MEGYvF1LAqSQQT3zE1Fx7wQzYsrvDpJ44bBa6dKxN6mTC", - "locked_amt": 0, - "reward": 6336840178975, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 19800000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "rogBxKsqTJ6XHv2b7JoQ3UGGyYm5gCLvfnx6x4wXRAdJZXPaSSELitiAwuv6wJiwxNX43uw41FPGwHfoHcwJMBSNjCeKEBoEvdS2QgE2mt8DuatKPFKXu7Q3bCaeH6Bbpiu", - "locked_amt": 0, - "reward": 90431824794, - "owner": { - "Account": "rogBxKsqTJ6XHv2b7JoQ3UGGyYm5gCLvfnx6x4wXRAdJZXPaSSELitiAwuv6wJiwxNX43uw41FPGwHfoHcwJMBSNjCeKEBoEvdS2QgE2mt8DuatKPFKXu7Q3bCaeH6Bbpiu" - } - }, - { - "amount": 1500000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "rp6vhhSNpCdJ7aseZjij5y7AdA4ikNVs4eqqSsXohTRUzKvb2gj9PwZVifmD8gHf11oTpNRoeRLrP3PCyvQmkBbHwLbLPBpmcXaVmukputWsT2HYVKP4By4TGtMEx1StCv5", - "locked_amt": 0, - "reward": 294778248, - "owner": { - "Account": "rp6vhhSNpCdJ7aseZjij5y7AdA4ikNVs4eqqSsXohTRUzKvb2gj9PwZVifmD8gHf11oTpNRoeRLrP3PCyvQmkBbHwLbLPBpmcXaVmukputWsT2HYVKP4By4TGtMEx1StCv5" - } - }, - { - "amount": 2000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "rqEDwXotmnA4fu2aJqcRQkuUsew238zsTyA2ydm8P8ZmmXaFXYFNvp2FG4N3VXMUPSerpCXfZEFxkdzbiGESZwv9Reo3eTRsv1ELZGFXEjiEwqAVeXwaGGDUh1g27G7u3tY", - "locked_amt": 0, - "reward": 77567965, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "rvXLHF8DBNwzZ63uSWPki3y7uNgGbdRCrKpouEP9N7awiGBDaP1uzyrtLBDtFbNgw8bPNjbyMsfAsNutZKnuX8JXzMiFvpW9vK4c2zmAmk3RygzwiFGCVJ9KSU7b4bgC1UT", - "locked_amt": 0, - "reward": 6877531223603, - "owner": { - "Account": "rvXLHF8DBNwzZ63uSWPki3y7uNgGbdRCrKpouEP9N7awiGBDaP1uzyrtLBDtFbNgw8bPNjbyMsfAsNutZKnuX8JXzMiFvpW9vK4c2zmAmk3RygzwiFGCVJ9KSU7b4bgC1UT" - } - }, - { - "amount": 510000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "s9mQHPDuKiUwomr7k6S3mmeqd8rwpXENtvmCY7f9ndukC4VQH385ePgzHdiw6vWoJX7ee1oZEFSYXXZtVr4326XmZrkTbranxdYz89Vrd1HMfX2f3uis4hi33XxiM4ksRbH", - "locked_amt": 0, - "reward": 780152437445, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "sMnHcRLM2BTKDLrJUDcTQPAE7NhkNDS3v986rmV2eZJF5RRqtDJQya2RnLTN8vBodfHrqxVeVpFG2MEbta6YmNfokSn135rYhAvnmDwPL1nd3Uq3iwqih5hNBpiGK7HY9D1", - "locked_amt": 0, - "reward": 7611295592578, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 24000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "sN4GfdHXZuD6kzXvd2eXaNXeL4GoGqRn5Q6bZZFGQFYQwiq5xaeLP7pJHCA5aHsLXpMr4CHtD5fQyVRngmk9v4SC5y7ugLBQ2yuJt1GkxGPQtWnJqafNQHhbH9xYwDn7wEk", - "locked_amt": 0, - "reward": 43268151637, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4600000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "sVhNRcqfxqYXh5YBWXbvpx36voghkU7SMr4LY15Ru7UQHtQv6a3VniWr2WD8cuKqF3fveVz6gLnfrfDU7d5vVaP3EQfpH6NnPDhyqAo1GSBP4hnBte9Lg9qYnB34LRUAJzK", - "locked_amt": 0, - "reward": 76392744936, - "owner": { - "Account": "sVhNRcqfxqYXh5YBWXbvpx36voghkU7SMr4LY15Ru7UQHtQv6a3VniWr2WD8cuKqF3fveVz6gLnfrfDU7d5vVaP3EQfpH6NnPDhyqAo1GSBP4hnBte9Lg9qYnB34LRUAJzK" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "sVmcJnhKJDfm8wzVjyeLhxi9RjcabEagJLnQoS6BXV6VvQ1GHpnyTPJBJbwCbG5igWn49UdMQtroxr2pGggh2FbXtyUbKqWexyK5LGgFn5QS4FesdFbnbcWf2bYkx6vDeDM", - "locked_amt": 0, - "reward": 7206376600867, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 505000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "sX4JooVNAFov3Xx9cfZHtRemijsggdRKrywC14jfGyZn5k2wupNvyY9ZLu7YTuh3CpuyKsftbmzYPzdgptG6Rq9UayDXeaPwFHanmXpUqGdTyEvw5Cb3UqGEqfCFZMqQhtz", - "locked_amt": 0, - "reward": 2063426446466, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4950000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "sa2MdiJhznhPH64AVHYGoZkVW162AEB2UXUYCyLNnW6PdqLb3gCD98bRYUHYtBnrn8Swu2Hgx5ZshKwS68hPcXRncC9dsiiJqAwNDupteayAPmnR5hm1ABkNsKPNdXXZoi7", - "locked_amt": 0, - "reward": 75957961298, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 504000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "scRkV9xaMCNTsjEx2mwDABavD5exRSNAyCnTZT9hYi2HGKPRAYhqzff5BmdsXgqaYRxgSxkyiDUBFiyHGhuHxMC2R5ztdmG8QUe6jBXsyFMJoGx6H9faXfyA2XwXrJMpbfo", - "locked_amt": 0, - "reward": 5190546947071, - "owner": { - "Account": "scRkV9xaMCNTsjEx2mwDABavD5exRSNAyCnTZT9hYi2HGKPRAYhqzff5BmdsXgqaYRxgSxkyiDUBFiyHGhuHxMC2R5ztdmG8QUe6jBXsyFMJoGx6H9faXfyA2XwXrJMpbfo" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "shAky1Dnjxdhy1HsJRC17hgFw7YmT8PSdobce73k3ANmJWaDmycRyqruoxoxKoaVpudkCY4ENSgrkEoUgfG9xBa77jULgpDcWvYNLFQfWsA2bSFbooCJhZTHyGLyNQC73os", - "locked_amt": 0, - "reward": 8055884278776, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "shB6W4UWipm3JQQgmbkC4Xy3CEvtyz4FL3QBpYUb5aRr4UspY4ezzq6XzoYENZgaf6p2j3xrtLuWNGcYhNU1jUdi9hS62bvCctoiqNNVdx1dXLJHyndHyT97Cww6Kmyr5r9", - "locked_amt": 0, - "reward": 7360588042631, - "owner": { - "Account": "shB6W4UWipm3JQQgmbkC4Xy3CEvtyz4FL3QBpYUb5aRr4UspY4ezzq6XzoYENZgaf6p2j3xrtLuWNGcYhNU1jUdi9hS62bvCctoiqNNVdx1dXLJHyndHyT97Cww6Kmyr5r9" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "soPdMsNykSsrLcmHGBGfiajFNc5kJ7SheMEapCu9zjnTyiFaJLc2MTeq8ZQ9R91dgxFQJjkybY2ETgTU5Xv3J9RhoHqzNVnBCty5s2W87UdntXWiSSWPEEpXYrun5Pw7eML", - "locked_amt": 0, - "reward": 7351299597267, - "owner": { - "Account": "soPdMsNykSsrLcmHGBGfiajFNc5kJ7SheMEapCu9zjnTyiFaJLc2MTeq8ZQ9R91dgxFQJjkybY2ETgTU5Xv3J9RhoHqzNVnBCty5s2W87UdntXWiSSWPEEpXYrun5Pw7eML" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "suRcCj2X2THo8mFFYrjhS4bbo45RDeT59VJi1rWoq1ZEz9Xx9CyiqMsz9oWhNhr6g71aPWrBtwMJR6oxxhmvfNxy1Sd5Q4VgMWmmBAfwnUabaX6itEmVv9fbGigFyNtSGvR", - "locked_amt": 0, - "reward": 7514873489879, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 0, - "eligibility": 0, - "faults": 2, - "hard_faults": 0, - "key": "swwDYvZyogPTXC17QCdao3jybKuFvtp2joQFYppgrMJthug2RLuE6gu9JfGrsEuMDYsMAecP5BPPiEViDofRSVcHY3AAQ6qL9ZmVSzrwiRqcCBFirUDGYP5WoJK1UdabsEE", - "locked_amt": 0, - "reward": 0, - "owner": { - "Account": "swwDYvZyogPTXC17QCdao3jybKuFvtp2joQFYppgrMJthug2RLuE6gu9JfGrsEuMDYsMAecP5BPPiEViDofRSVcHY3AAQ6qL9ZmVSzrwiRqcCBFirUDGYP5WoJK1UdabsEE" - } - }, - { - "amount": 1000000000000, - "eligibility": 15120, - "faults": 0, - "hard_faults": 0, - "key": "t7e39EETKLqNmaUWmKyKc9S7wi2hLjyzfzikWcpKmSukCvVgj4rzL92x5gBgNFQKASgm53p9RkKxm62X9WeoEPBgpPeNf8qt9MUaLbos64NfXSmFZdDK8Da56SBfpnVsBvj", - "locked_amt": 0, - "reward": 636057313, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 2000000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "tDZQKdp9m1Xp9VZkPyg5scFDArZBAJxTsa4rYheD1jx9Y1GrpwtMFeySZKy88xZxiMFs53x8zZqSTmNKbPjGdPwzy3b8KSp5yTmLjBhBZmKPnLvMjv4mSDWCjL9Sq3ULmFy", - "locked_amt": 0, - "reward": 14536237313, - "owner": { - "Account": "tDZQKdp9m1Xp9VZkPyg5scFDArZBAJxTsa4rYheD1jx9Y1GrpwtMFeySZKy88xZxiMFs53x8zZqSTmNKbPjGdPwzy3b8KSp5yTmLjBhBZmKPnLvMjv4mSDWCjL9Sq3ULmFy" - } - }, - { - "amount": 1000000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "tF7NxrSfBHmvYfSMz2K1pfXDsA8dqrtDubXhUz3QvJLKj3vZJXWjGr5RFpoyvUzyMpnrq6yYF1KrytLv5HNt9K15hciSJdReotEi57veXCjR1wLnnUZKp2X7urheBbzvtGp", - "locked_amt": 0, - "reward": 248217488, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 30240000000000, - "eligibility": 58320, - "faults": 7, - "hard_faults": 0, - "key": "thrWTo9XztqcpodzucqDjoEv2Wk8C6XEhw9DQKcZ8uMjF5NHBeFwysvboLuqbwQwESRVfzJBSvcTZNXTsr25zasagiuseY4tkF1HyK25rg73nJxq86gZQK14bFXMVPLwfpe", - "locked_amt": 469760000000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "txesrFKYx2Ea7foBoBUNDj1rn1MjG8KREfZYNEb6UGg1k3KSBQdXr52Ayfemz1cEJ64AosipuGH5khnSXq87EcKP6uD2JrGb1NKdAgBELYkocXpbcmANd4VupWnVCPoecr1", - "locked_amt": 0, - "reward": 7493948476408, - "owner": { - "Account": "txesrFKYx2Ea7foBoBUNDj1rn1MjG8KREfZYNEb6UGg1k3KSBQdXr52Ayfemz1cEJ64AosipuGH5khnSXq87EcKP6uD2JrGb1NKdAgBELYkocXpbcmANd4VupWnVCPoecr1" - } - }, - { - "amount": 3000000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "tz9ChDUKqoPTfrpfTdPLEBHCQHf4j68bJRUomGVrPGRTdC7i5fQJJRQjqAY1EYE9JpvYW1vPRPQb7RqgighKQGXB64cjD5CCV3gwcc4U5Mj8T4sPwV2yRRsVqSTruwTX9kJ", - "locked_amt": 0, - "reward": 682598092, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "u1bee5K2ZFCDr7Cp1wZRomLHM18TVRwqtMNTFYX8dojJRQMEmALMVceKo6n5P29U3H7eNkGoTwV8aPdgt1tHSgoyHqkvKdGebNp8wa6EsqF1JU3mQFKVzUbeWt3wvuGm3Lk", - "locked_amt": 0, - "reward": 7551922334029, - "owner": { - "Account": "u1bee5K2ZFCDr7Cp1wZRomLHM18TVRwqtMNTFYX8dojJRQMEmALMVceKo6n5P29U3H7eNkGoTwV8aPdgt1tHSgoyHqkvKdGebNp8wa6EsqF1JU3mQFKVzUbeWt3wvuGm3Lk" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uDYKaU8SM5iriU88tWsR8Z7KbepmjiVubFLtetASuzEeBjwJZ5en4XuXjJTCZgHztK85gjS9que8njCebHGku9wnXzKbneYwx5xF1puiNF8XWRTcvDAta1ndsa4jAqGkWzm", - "locked_amt": 0, - "reward": 7391984635089, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 2000000000000, - "eligibility": 56160, - "faults": 0, - "hard_faults": 0, - "key": "uKPG5siNPyqg2t6pi81Q6vJXTZ37e51rMoo8ShXVUxSSPqL5TvbBKj6yw7bWo286DCnULsWfwFFkc7FGraPGuxWT5CycwLBfDTPUYRhHJ96A2ZSZWuqdDbKjCVvndikgW9A", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uSXgfWF1uhmxjmLaQPXhVY2NJt1UNUKf5xTGK5eCGF1kFtnhG2DwhYJGX4kowZScrJV37vEFDMPEzG4q2hsjBoSMbnMjz7qUWevKA5UP3MBZS45k6vcjHEF5GB5CeuafQwA", - "locked_amt": 0, - "reward": 7767772961486, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1500000000000, - "eligibility": 41040, - "faults": 0, - "hard_faults": 0, - "key": "uVvGzvmdDZWC9pcLvGEvazVWdJFQsLphEPBA61j5pVWrnwGztzENkYWhjaTtqAkykBS3khzYhGXFwfC3fMe2H5whVAq4jbe2FZQCePks193bfd1xe2uYfehZiNxw4zKvMNZ", - "locked_amt": 0, - "reward": 465407790, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "ufX5NcUWXUKkaLYrdcUf9yxmSjWngrS8Y5ErGmzf56DjHUqeonr3oM4cLMsuFKfm88WS1b8FPVoMBoETnuoTkHZ4whwhsSEuQzuPMQZy5UjLV5u33vbe8sFgceaYnn5XVsd", - "locked_amt": 0, - "reward": 7235901395821, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "uk9f7YWz1316Sd9j6TG3o7D5uLczKKGnU7B4KdKBhqRxeHVb5aVCYsLX9VT8ENN3WL673FbJccYEGHtgkZztpuezbETuXFyq9ATR7obC6C2aYBL3GMSzSTS46GJjEp8axQj", - "locked_amt": 0, - "reward": 17949227919, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "uvR72GsvbjCy2jCR6EKbfKpgUfHYQrphV6u915bQ3rHAEyPV5ows6QjtmoLS7NSvmJrBWgM7v92faivad82t3WDBB1ceUQmohNh6EBT2TiNALkwaMSzAzKziFEqUY67j9RU", - "locked_amt": 0, - "reward": 7414055592213, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 59990000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "x8NZbycsc1Cjz4iW6DriJxkn68h5KaCjuunuFDr5bcjsDSieRCfL51SokQWnpFR46BBhLVPcv8AtuRdVYghZSvWa31mTbE425pFZZYaMMCfLrinjj4bbBFhsZz3PdM3xMp8", - "locked_amt": 0, - "reward": 398037872095, - "owner": { - "Account": "x8NZbycsc1Cjz4iW6DriJxkn68h5KaCjuunuFDr5bcjsDSieRCfL51SokQWnpFR46BBhLVPcv8AtuRdVYghZSvWa31mTbE425pFZZYaMMCfLrinjj4bbBFhsZz3PdM3xMp8" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xEXp8qBarpXnVD9DJHUj8ywkWPggbPmgsmGFFtGAuXd2EXwEiXiXJ6r4WqdjvTvpE7Fx42TpwnkrpFwdc5BphPu7LCQ3FPU1DMQ1WKoDCxeQVircgHKrFpWsCZ8VLrGCdWm", - "locked_amt": 0, - "reward": 7317990920949, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xLwzkFxrXetA74LSreTusgyv9Lh62tvHfL7jnuGmEdG7Aa9W7XLEDx7Ag968wjD8CyVncvsKVd6YXzrB6HdHVa1e7mYDVe6tDrmXiAatAnH3KphhPHzcPsEUQZzyhV2Emqt", - "locked_amt": 0, - "reward": 7495848393394, - "owner": { - "Account": "xLwzkFxrXetA74LSreTusgyv9Lh62tvHfL7jnuGmEdG7Aa9W7XLEDx7Ag968wjD8CyVncvsKVd6YXzrB6HdHVa1e7mYDVe6tDrmXiAatAnH3KphhPHzcPsEUQZzyhV2Emqt" - } - }, - { - "amount": 5000000000000, - "eligibility": 49680, - "faults": 1, - "hard_faults": 0, - "key": "xPwM88RhuBXraCa1Lapp561EyxVe7F7RG6v2MM196Hs6ok71tZVPRZ7pRHXuEqUvSbh1rzTDyJ9Q4EnkrQ8kvYnmHUtmr5GFvJFG67xHuL3qVgQpWjmT1qtxTsfJfPE7r78", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 2000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "xR2Au27wxGRkM9ZpbbkPnUP4uSo4jWFCVig5d3CP7DR9fZ7oJko7JaDraeTx7RLEpauvZBdxfttcUz3VkAjnxGLXr6xNzrJPuqJt29BkgQH2KTkLukfzzPy4uRFveGVBK3t", - "locked_amt": 0, - "reward": 16103964526, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "xRytSKgw9zDQBXzHD3UpQWXxjQdfak8epebGPy2FJLrk2mGQDnM29mbxPDcVbniU3YLyPmGgkw12KW6uMBq4sbUfCYaBr9UKGZhTqyPhA2bYCDHJMcXuTX6jDKX1TFRBCwX", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xWeLQPyUXo82pjvxmf5iZdr5itR7kWriTpMK47M5KkDYYtg6Vmtgt1D5DLgEDLfv8BuJjyuB4aDB9wM3NXcdEY4Y9wzJ87JKjGfY2XzZVvb6R3LcxWCmzRfBS1bSihu9af7", - "locked_amt": 0, - "reward": 7804360300347, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 30019000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "xa82X7cdvvdepZr7BT6tvXBpYTJTVi67FbvK8TgxgJH3ykVzTyXF8XtN86Lqu5PYesdTNjHywjRkZqe743t2F71cuiTiGAFDVZaDM5kHNE3NKrhMyY8p4baw2QyzAW9pCRz", - "locked_amt": 0, - "reward": 43223088346, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xc5LwKkUxzQ6Vhtd83Cuz5whAPfi8naDGvQPLhQPqmGGteZRGrfoH2QU3ZwGiy6xuviEfjpkdZNh69rJfg2L6PVgPBdaumX5AZT4N5Lyv9GAi1ZunJWQobKxXk2JGsWdZwU", - "locked_amt": 0, - "reward": 7016612133945, - "owner": { - "Account": "xc5LwKkUxzQ6Vhtd83Cuz5whAPfi8naDGvQPLhQPqmGGteZRGrfoH2QU3ZwGiy6xuviEfjpkdZNh69rJfg2L6PVgPBdaumX5AZT4N5Lyv9GAi1ZunJWQobKxXk2JGsWdZwU" - } - }, - { - "amount": 20000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "xg5Ejj1FWNqLmXM4xP1SjDKmtWL6Zu6oMvVoLCmmFq23P3Trw3PXrh8xB5uFd99qxLvgC7cxxcskoYA1gF2rtqWJeQbxmfGGnFtiSaJHpGEq1rvci6NhY1LHHfMYkoNpcNh", - "locked_amt": 0, - "reward": 31633498817, - "owner": { - "Account": "xg5Ejj1FWNqLmXM4xP1SjDKmtWL6Zu6oMvVoLCmmFq23P3Trw3PXrh8xB5uFd99qxLvgC7cxxcskoYA1gF2rtqWJeQbxmfGGnFtiSaJHpGEq1rvci6NhY1LHHfMYkoNpcNh" - } - }, - { - "amount": 14600000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "xn8a8WN4GkU2uqBCv7VfHFgCDKaQY9kmeXSQhBkLtRVRpRY1JM7J59MaWRtG8RRQRJU1Foc24hQHHpqR63cQvqzqvbZd3nz6bR3JBjpRrezBaB7kPZ1ecLZYQcChS9q2xYd", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "xqn4oFHyeUE46CJ7XZnaA6pFSqUt8EkoNjM1or4dyNigWpP9GfbH8Y5ps8PqCF5wcnfvjoBtM2gNrauB3EVATv6PnLPiGBp46eiNqrVcWWcFjNTwB5ggQ1cJQVdDXsoNi1S", - "locked_amt": 0, - "reward": 6996618997361, - "owner": { - "Account": "xqn4oFHyeUE46CJ7XZnaA6pFSqUt8EkoNjM1or4dyNigWpP9GfbH8Y5ps8PqCF5wcnfvjoBtM2gNrauB3EVATv6PnLPiGBp46eiNqrVcWWcFjNTwB5ggQ1cJQVdDXsoNi1S" - } - }, - { - "amount": 4500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "xuLxjqrDRxcsXMYmuDnRkFnELD6BdMcQUrKjH7hBq7a37LzrG96Da5oCDaLaHfBxz9DzKbQj3RAvK32nHQ7qhRuWFUkRERkNHWwasg81MXNqKrm6dYnE4GvTXbiPL3Gx92B", - "locked_amt": 0, - "reward": 116776106940, - "owner": { - "Account": "xuLxjqrDRxcsXMYmuDnRkFnELD6BdMcQUrKjH7hBq7a37LzrG96Da5oCDaLaHfBxz9DzKbQj3RAvK32nHQ7qhRuWFUkRERkNHWwasg81MXNqKrm6dYnE4GvTXbiPL3Gx92B" - } - }, - { - "amount": 4800000000000, - "eligibility": 8640, - "faults": 0, - "hard_faults": 0, - "key": "xwMHJQgF9EGawzuMt5Pvjp1tSWEQmWbeU9T34qTeTeoY8nPijm3qd7G6PrNVWCm53FGsHL5Pc442oLqwwLZZZoqky7Cz2yUYf9jEcMzsGKj45rBmG5CbdhLLmzFm8Tb2Lih", - "locked_amt": 0, - "reward": 73181450856, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "xxkdeoBGrqfS9ALm84AhtnBwmcPkyL9JXvBGu1dvoXGvASFSfUx7AuJk3epPwWDdWXNKxcE8HALXZQBNz19Vf1kH4onpw9tsH6bWGDvZhDCytVuET5cFbjbBeBd2CPpPwwD", - "locked_amt": 0, - "reward": 15420512260, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 29000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "y1q47PKFhxXHM3KuvArt1DBrGjyER2r4kt4BYcbWNFkjrWCtSuX1Ev2Lw6X1q6QsWHAvkAJawQ7MZyvZsjE5iTPXikbRS3HmsSwrRNC3vLRCMkfLPxqqFED7SHevaDrQzFK", - "locked_amt": 0, - "reward": 103649098775, - "owner": { - "Account": "y1q47PKFhxXHM3KuvArt1DBrGjyER2r4kt4BYcbWNFkjrWCtSuX1Ev2Lw6X1q6QsWHAvkAJawQ7MZyvZsjE5iTPXikbRS3HmsSwrRNC3vLRCMkfLPxqqFED7SHevaDrQzFK" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "y2axcZATs557zYzuuQSyyVDpV7jxR5th4YFy22o7bABByvXvybTGCUxfvsyaSsenZA5b1sYYdSLwYdjttnkx9wBpYhuTqy72xKSKhbJFwZwzmUEkpKCwT6pRXqgDV2BBFvC", - "locked_amt": 0, - "reward": 6946491986904, - "owner": { - "Account": "y2axcZATs557zYzuuQSyyVDpV7jxR5th4YFy22o7bABByvXvybTGCUxfvsyaSsenZA5b1sYYdSLwYdjttnkx9wBpYhuTqy72xKSKhbJFwZwzmUEkpKCwT6pRXqgDV2BBFvC" - } - }, - { - "amount": 4950000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "y7FSjpyFJAPiHjJnwuoNz1DpBWzoFqto6AvxMNeeYGS3H8Tboi5kY8h5op61XB1u7BgCY1PRzBGu3ZDAWzRfEJgZ9FLq3KNVe581QsFaPcr95pfaW4Qev9EzoiozTAffbV3", - "locked_amt": 0, - "reward": 62458918742, - "owner": { - "Account": "y7FSjpyFJAPiHjJnwuoNz1DpBWzoFqto6AvxMNeeYGS3H8Tboi5kY8h5op61XB1u7BgCY1PRzBGu3ZDAWzRfEJgZ9FLq3KNVe581QsFaPcr95pfaW4Qev9EzoiozTAffbV3" - } - }, - { - "amount": 7990000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "yB2GHYx8pRdPzNDLTrFFmrcZFYE9GTENjNAfMZKSYQAPK8tNWePqtcFRpJqq4dtTtR4dzunm6UsUnuo62GfbWDuAfWvpPnfoMVUVFHiZnWwdUK86jo5nFNGvVy2G9qCYZDt", - "locked_amt": 0, - "reward": 107061662910, - "owner": { - "Account": "yB2GHYx8pRdPzNDLTrFFmrcZFYE9GTENjNAfMZKSYQAPK8tNWePqtcFRpJqq4dtTtR4dzunm6UsUnuo62GfbWDuAfWvpPnfoMVUVFHiZnWwdUK86jo5nFNGvVy2G9qCYZDt" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yDiwuTDWV9WPeihhaToqHYijiwM5n84deh8Nn779WyNr9kGFcRLnHHkDTcVpzLaNSEa7b3DQQky6i72hvsrKJ2uFSsJQD37pokQKVokV4Q2q1p1aRPNRdSujfmcdMP3MBVS", - "locked_amt": 0, - "reward": 7008983973208, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 50000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "yLWh6C8gGG3PhkzMTz7WUTyXQLudWLN7EXu5PZaEaKJT3aQa2Sf9kodH4HF3WQK3mUfh5edqsGEBjW9pq6JHLigezJPZyYnUAnjMRuKFstBktwf5rSw1TgD8Dwz1SmNi6nV", - "locked_amt": 0, - "reward": 14567264499, - "owner": { - "Account": "yLWh6C8gGG3PhkzMTz7WUTyXQLudWLN7EXu5PZaEaKJT3aQa2Sf9kodH4HF3WQK3mUfh5edqsGEBjW9pq6JHLigezJPZyYnUAnjMRuKFstBktwf5rSw1TgD8Dwz1SmNi6nV" - } - }, - { - "amount": 2500000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "yWynRKzN1BdKJQDtv848LdSRJrFqdrudoDTnre2fiWAC8XvZuTb4UAjAkStu9idW4N9R8ncnuk4dsMFPE63AgF3Jbdemax5pH2YMkngxkjEBBaRpEV1wHHZh2ecS3vKeGiN", - "locked_amt": 0, - "reward": 17095981698, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 3000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "yY5K4A2gvP6J1mMZJ8fjB67pFQS9Jmr2gcrvckB7A6fCW3P5NzciwHvFXg2UqCfApGUkA9L3BvrjGGHk8spVdLQv1AuqjGfiSL21uJF4k6pNJZuV8b3vuoupKPRQWHEsyKf", - "locked_amt": 0, - "reward": 59342189044, - "owner": { - "Account": "yY5K4A2gvP6J1mMZJ8fjB67pFQS9Jmr2gcrvckB7A6fCW3P5NzciwHvFXg2UqCfApGUkA9L3BvrjGGHk8spVdLQv1AuqjGfiSL21uJF4k6pNJZuV8b3vuoupKPRQWHEsyKf" - } - }, - { - "amount": 1000000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "yc8aiwLXGpXjHFgP6kgEHpTq6vewtqGHCNKdkvRndqeGsMrkxeEEX26FMY3sHFrMMxDyUSRFWbeWBaWkuMkErotcC4qhvDReKGddJ5g32G6parJsu43PBCnsvtumypnayqy", - "locked_amt": 0, - "reward": 638323011, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 2000000000000, - "eligibility": 45360, - "faults": 0, - "hard_faults": 0, - "key": "ydXphWoWDVpfWv5mkEr4m51kk24ChV8FUrwGhSfmcHJYHPnGgLrWTk8XaJTMWHunoToasBLR2UYBLGPPX7D3dy6KVXPV3fAWU8Gr7YsEimivPKhCoAQC8psRYhGtZMXUPRt", - "locked_amt": 0, - "reward": 310271860, - "owner": { - "Account": "ydXphWoWDVpfWv5mkEr4m51kk24ChV8FUrwGhSfmcHJYHPnGgLrWTk8XaJTMWHunoToasBLR2UYBLGPPX7D3dy6KVXPV3fAWU8Gr7YsEimivPKhCoAQC8psRYhGtZMXUPRt" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yjfKm8yE7SarRQuXYzt7RZ5EkFLZv67KfSiKarVhWsTdHiy3GGbmWF3KmYHvqVWaEGQoVQiP1A6vgrA7A3zt45Zc2zvht6q9REHkYLhFywmn7czjj897xXe7eTkj6itMx8X", - "locked_amt": 0, - "reward": 6986991787460, - "owner": { - "Account": "yjfKm8yE7SarRQuXYzt7RZ5EkFLZv67KfSiKarVhWsTdHiy3GGbmWF3KmYHvqVWaEGQoVQiP1A6vgrA7A3zt45Zc2zvht6q9REHkYLhFywmn7czjj897xXe7eTkj6itMx8X" - } - }, - { - "amount": 450000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "ykesisNk9pgYFQm65meee5TbTLvrxgS9Mzq1P4GKr4XFXXvN5iraQw1YaNV9H11nFytuGHmx7UngaaTuTnqEkDeGBHvgBE1SZ3PwTsQQRmYsdX2dCKEVxJQbZv47yntfvtQ", - "locked_amt": 50000000000000, - "reward": 5766099832210, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "yomfztR36C81wr31uZ5XZFvww6dfcFK2wBmvRsHnm3JVgF3XcCz6fs58Z3hfiFswux55xsVznuwMRq6Frk28FcJRrpvnsyT3pRNmuqq4mHFqvPYbSYk75BnC3dJX3DD76pC", - "locked_amt": 0, - "reward": 7020551562601, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "z96tDWGGF4cuTrQLZgLnuBos4VAMfUP3qYJ4A4mHWoEZWi5cC2P6hNgC5b9LiWLaWTYseda3teKrTvEjCsr3aPVDdLyhgrMshuJX8KPy4yZks5YZRt5JHNxM4fh7fX8fgTw", - "locked_amt": 0, - "reward": 7454220423464, - "owner": { - "Account": "z96tDWGGF4cuTrQLZgLnuBos4VAMfUP3qYJ4A4mHWoEZWi5cC2P6hNgC5b9LiWLaWTYseda3teKrTvEjCsr3aPVDdLyhgrMshuJX8KPy4yZks5YZRt5JHNxM4fh7fX8fgTw" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zERG7qf7STXTAKKiUbEvfj4YcpTttHASTxDXUBA1JYxdhpuU13FtgzDUpU5eMSt3qxYamQNZjiiiDKVN3zi5Mnz264ggAD3Ft9j3BwmcHArQpPdVhLpHCfnq5Pot6GCW9Vx", - "locked_amt": 0, - "reward": 2335501877268, - "owner": { - "Account": "zERG7qf7STXTAKKiUbEvfj4YcpTttHASTxDXUBA1JYxdhpuU13FtgzDUpU5eMSt3qxYamQNZjiiiDKVN3zi5Mnz264ggAD3Ft9j3BwmcHArQpPdVhLpHCfnq5Pot6GCW9Vx" - } - }, - { - "amount": 25000000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "zFVXTQZfY6gB2rWZFEm4ToWY2NKrpgeswTboWMAe7cjzaqHjsdGuADp8GsYzeruRkP3ZozA34mhWedEHkEiUr73iv8EcK3A192Y5b2uQYxLgprkZ2u8WKZyfDuZiyy4yEuL", - "locked_amt": 0, - "reward": 29167460855, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 135000000000000, - "eligibility": 60480, - "faults": 6, - "hard_faults": 0, - "key": "zKSqc6213BgJbtYtYGUFWVSPzGxWWdBH1tXkpS62cGRNuqJ2NPZK9fpKpw3guDuRLUXLRiL3ZmSVLiKoWU47mXWNszSMXEbe5xiykoa1DZoyNRVbCBKmy7zkwTR7Yesvq8U", - "locked_amt": 315000000000000, - "reward": 0, - "owner": { - "Account": "zKSqc6213BgJbtYtYGUFWVSPzGxWWdBH1tXkpS62cGRNuqJ2NPZK9fpKpw3guDuRLUXLRiL3ZmSVLiKoWU47mXWNszSMXEbe5xiykoa1DZoyNRVbCBKmy7zkwTR7Yesvq8U" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zQgvJ6xQPCumYhTso8LCgmcxjATSuza5ACBHQs1t1XPBdxQkh56vHMJXrd89dJV5d6fXimP8HiS4Kb1jcj2YpLCQQsJLhiJDzR7PHPE5LLmDSPPqoT4XA1C4RL7vX4zdAAY", - "locked_amt": 0, - "reward": 6829571609560, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zT3G39wGo9htH5GGCfugrE6fEbpDknb2aNwrPS51Upiqb1zZh8QvJKDKJjrJYC9fNBwezUWbqiN1HXjr2kzcQYacXQkyycVqP88aHb7v6RNCuLuPVEF8iMpZGEteeRXb2nS", - "locked_amt": 0, - "reward": 6777651848269, - "owner": { - "Account": "zT3G39wGo9htH5GGCfugrE6fEbpDknb2aNwrPS51Upiqb1zZh8QvJKDKJjrJYC9fNBwezUWbqiN1HXjr2kzcQYacXQkyycVqP88aHb7v6RNCuLuPVEF8iMpZGEteeRXb2nS" - } - }, - { - "amount": 90000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "zT4jzP1bTetabxSoxPxPRYQXP2Br5aP7U6aE6m3SBYC3GZswBfiFFz9Uavn4xo1ZTaWAKrNAntup22cM7F1rcDVg9zawBoVgHSAtzKVbxhXbm6dZXtgeMKDrcrJehAQsa8d", - "locked_amt": 0, - "reward": 50544026754, - "owner": { - "Account": "zT4jzP1bTetabxSoxPxPRYQXP2Br5aP7U6aE6m3SBYC3GZswBfiFFz9Uavn4xo1ZTaWAKrNAntup22cM7F1rcDVg9zawBoVgHSAtzKVbxhXbm6dZXtgeMKDrcrJehAQsa8d" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zTHaqm7jKyV4cSqrdeqCkeLci74v6ymXU8QRN48qxAoztYZ8hbLemskC9ycQqtEW2EdzALw3bwyEGmrG9J3DDeNKZoPoPCSLHL2Cymkf29zxvi8J23gB9MFwFSRQSEKRJf6", - "locked_amt": 0, - "reward": 7432524164948, - "owner": { - "Account": "zTHaqm7jKyV4cSqrdeqCkeLci74v6ymXU8QRN48qxAoztYZ8hbLemskC9ycQqtEW2EdzALw3bwyEGmrG9J3DDeNKZoPoPCSLHL2Cymkf29zxvi8J23gB9MFwFSRQSEKRJf6" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zVnmVA7jfgAoBGnsMDrHGiwPx3sZhG42t6pysHjMj7rF6BKPGut87GZaDaXwmdjXsz53ULB2Mmur9aoSU1ZCGHYwQ57eN59FMwHqdBjULpNBfvFZN1qnzVpgz23y3UPPz6x", - "locked_amt": 0, - "reward": 7465149666031, - "owner": { - "Account": "zVnmVA7jfgAoBGnsMDrHGiwPx3sZhG42t6pysHjMj7rF6BKPGut87GZaDaXwmdjXsz53ULB2Mmur9aoSU1ZCGHYwQ57eN59FMwHqdBjULpNBfvFZN1qnzVpgz23y3UPPz6x" - } - }, - { - "amount": 1000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "zfnJJ5szM4EPk4KjE1LcHsHQhPBjivarV7skKMszgyyVCnXRhvq9s9amTbiLyB6TyZ9i4abdk9hhBAvcEpPDfY83fiBDZY5uc2mf8xo4EMf5reXfpk9eW3a45XQQWPgTQcf", - "locked_amt": 0, - "reward": 1210060254, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 14850000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "zgcEqSf9XYbhEpQiCT8NXQSAHUfvTSHbu1fdTBG1dbAKz1p3qEdjCJhaxFN7rbh8xWo9A18fQ3JuUmLxqEmQnpAKsHp48KmKfp5My67gGTUpcmWVd8i3KNpxR8TuTm3zqMr", - "locked_amt": 0, - "reward": 113344220531, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4700000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "zhXg8xqq1EvUxQVajbGJrdYfTcpwRw4V8cbnQL8aPMB4CCv2HMJ6Xkh7FotjeYMQmvVqfkL3gv1dNjuty9hfrEHQQdYFNAnquV5NBnCGueku9sFbSfif2DURijNfLDrVc4q", - "locked_amt": 0, - "reward": 34657796153, - "owner": { - "Account": "zhXg8xqq1EvUxQVajbGJrdYfTcpwRw4V8cbnQL8aPMB4CCv2HMJ6Xkh7FotjeYMQmvVqfkL3gv1dNjuty9hfrEHQQdYFNAnquV5NBnCGueku9sFbSfif2DURijNfLDrVc4q" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "zseHtUg7CNtUThmcsnren1FJtK9inn2kTMg38jd74zrRzPP1Xm8XzXQE528bb9CSwABwnuMgVA5CjUJMYnNmzdMTMTkQHiWuAAmASeS27myBaEGEqg3DUXLJZdPzMxaS7Nq", - "locked_amt": 0, - "reward": 7134931385805, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 10000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "zvpj2P5DPpjwxf72kb4cJYmPSEEcrPsUxL7pcpdgE4qXJYCSJxPvPniu94CNVXnEwLjMBEgL33jkv3Mw8fh7nKWsDgJPCT2PCzND8BMQ7cszuQR9PtB3a3Sm3xbLbr1ub4k", - "locked_amt": 0, - "reward": 30329930041, - "owner": { - "Account": "zvpj2P5DPpjwxf72kb4cJYmPSEEcrPsUxL7pcpdgE4qXJYCSJxPvPniu94CNVXnEwLjMBEgL33jkv3Mw8fh7nKWsDgJPCT2PCzND8BMQ7cszuQR9PtB3a3Sm3xbLbr1ub4k" - } - }, - { - "amount": 2000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "zzxfn4pQEjVwMGhdPszeyHtWZf1wbxmGR75JGeBK6cXe8sYGnwXVdn8Vvi4p6ZLSWJwTrrWbpKBoMWWZk4XAro8gwyMnfSxeziTkX9YqWYUytokgBxVPHHBiPsqUTWP2xNL", - "locked_amt": 0, - "reward": 17392236037, - "owner": { - "Account": "zzxfn4pQEjVwMGhdPszeyHtWZf1wbxmGR75JGeBK6cXe8sYGnwXVdn8Vvi4p6ZLSWJwTrrWbpKBoMWWZk4XAro8gwyMnfSxeziTkX9YqWYUytokgBxVPHHBiPsqUTWP2xNL" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "215SPqmBgiheG8Eac5yBi6NiNb6MyN5yC9MKJKfUAtU5NmafmowELzZKXo3pbS1h2Unqeyw9BShTz4ZxNVt9ZG5TTLJAuMHrwLHtXicKpgrhTttkhLA14apZ4tDxNgQkCtj1", - "locked_amt": 0, - "reward": 7074719183418, - "owner": { - "Account": "215SPqmBgiheG8Eac5yBi6NiNb6MyN5yC9MKJKfUAtU5NmafmowELzZKXo3pbS1h2Unqeyw9BShTz4ZxNVt9ZG5TTLJAuMHrwLHtXicKpgrhTttkhLA14apZ4tDxNgQkCtj1" - } - }, - { - "amount": 1000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "21QJxGctSJrgaF7qrnKQXbqDsNanHJZT7TjxA9SjSdPRijRf7MJ8Rze3oxSKzKYdDquDDgLmgDu2EPtYVmYkEbb9gKo8YdtP9uN2ZzeACVNQbEvBLz3RUCyo2zEhNsqnB5Y8", - "locked_amt": 0, - "reward": 14831422906, - "owner": { - "Account": "21QJxGctSJrgaF7qrnKQXbqDsNanHJZT7TjxA9SjSdPRijRf7MJ8Rze3oxSKzKYdDquDDgLmgDu2EPtYVmYkEbb9gKo8YdtP9uN2ZzeACVNQbEvBLz3RUCyo2zEhNsqnB5Y8" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "21SQ3HyThUvJUAtn3cfYUAisdw9h25DCp5hT2vzeiiQrvjGpmjsZKmbMMQTFSfU3EsEYtLqncXhVRkxnapwYrjYmR1tVdx3xE3nz2UkxSD1L34E1aTCoGqqZek9TfmSTQ5Sn", - "locked_amt": 0, - "reward": 7043130493696, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "21kVjRYLmoPy3WGK8h2TrVxVYzWT5QZfpMD9JHwAALkAVbvGLGETJxPmZuMDZNLxXUkebsyCRXSzxgNAvoiMxaYX2mFwm6RnYHrg9z7iUV2uX3ZJwKk5oHHYvSvHtzdEhPka", - "locked_amt": 0, - "reward": 7192222581053, - "owner": { - "Account": "21kVjRYLmoPy3WGK8h2TrVxVYzWT5QZfpMD9JHwAALkAVbvGLGETJxPmZuMDZNLxXUkebsyCRXSzxgNAvoiMxaYX2mFwm6RnYHrg9z7iUV2uX3ZJwKk5oHHYvSvHtzdEhPka" - } - }, - { - "amount": 4500000000000, - "eligibility": 28080, - "faults": 0, - "hard_faults": 0, - "key": "21kpiMmStRRMSwV9C2NQ5J1p3kWiSKyjHFUZHw7Jk4GfPEgdnAJGr3UPwqqncYTQA3xuG3bEWoBoDyDULAe88BVxfbWopLbcuHiSoaUq4hRMAdeKeE5TreePkYrQ8GkTaQW3", - "locked_amt": 0, - "reward": 3413845903, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 43200, - "faults": 0, - "hard_faults": 0, - "key": "21q1TvrCkhN69R9hujX2gt4xxiDetZjmjj2r519Vvp7smiSRukNnnxosrS6sWrzgMPGrNWAciQT3faDrDGkqNJdyEfjYi5C1dniBo3F6pzzQy6nVPsbL7Fqe2BYSWVHZjNyZ", - "locked_amt": 0, - "reward": 372326232, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4888000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "21qyUCtnGwCKHKb42jZak8771rAavhcqNaHkDZsvrSb7Vq6zSBEivSL4kDk7VBFs234WvCveUtHaqSxdu98s41K6sAu8hno3n5jzcLwhm9E4SAwCNf8q2KBaGzmXCRgANpoz", - "locked_amt": 0, - "reward": 49013517348, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4950000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "21zbWCbNJBpp6wBZ88cUGxD2ywSHthXEoBnz2hGbBShMnmJj8BbYbf4DM1ZZmRktd15XftQTVj6dv717LxKnXtAKFoUfN2tSBec1R1E2zWZibnRaUqR2WT3YfYc8QX2mSQiE", - "locked_amt": 0, - "reward": 17240988191, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4900000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "2262WQqqiFonBaKtdKdsAxurcYuD3Ag5C6QAfZXQXq6DwufZUbFP5CEvU6hYAvURQWY2iRmfQZD2HqniuYFqXTFE1R2wjBkoy7zNY9GWzduegdzTBYk5PpxT5W8t9U3P29xU", - "locked_amt": 0, - "reward": 114727950696, - "owner": { - "Account": "2262WQqqiFonBaKtdKdsAxurcYuD3Ag5C6QAfZXQXq6DwufZUbFP5CEvU6hYAvURQWY2iRmfQZD2HqniuYFqXTFE1R2wjBkoy7zNY9GWzduegdzTBYk5PpxT5W8t9U3P29xU" - } - }, - { - "amount": 4000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "226JM6nXE6JjybjeJrKKjnqUe1J7RGxXoqJmnxztqfftcfwYNjVTQwCE7zFFFtxg7pcoK77yxwZFFi5aSyM1tq2Y2HiD1Hu1dHUBvzwG4XVtZB9bjEKm8ySP3rsfoxTqMacu", - "locked_amt": 0, - "reward": 1256601033, - "owner": { - "Account": "226JM6nXE6JjybjeJrKKjnqUe1J7RGxXoqJmnxztqfftcfwYNjVTQwCE7zFFFtxg7pcoK77yxwZFFi5aSyM1tq2Y2HiD1Hu1dHUBvzwG4XVtZB9bjEKm8ySP3rsfoxTqMacu" - } - }, - { - "amount": 9990000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "22ATFnKCenVfSyZ7Wxfvy9aYSx6ff6aPGLKX7ndnMCLKpsfRG1r5a5psy6PZNH3Ye1rkg2GsrGTHoNBP3hovNcJVyrNFNCPFMKzAe2PTHfUTJ6yupjSHwKifh28jtJWCMvou", - "locked_amt": 0, - "reward": 62522807257, - "owner": { - "Account": "22ATFnKCenVfSyZ7Wxfvy9aYSx6ff6aPGLKX7ndnMCLKpsfRG1r5a5psy6PZNH3Ye1rkg2GsrGTHoNBP3hovNcJVyrNFNCPFMKzAe2PTHfUTJ6yupjSHwKifh28jtJWCMvou" - } - }, - { - "amount": 4000000000000, - "eligibility": 23760, - "faults": 0, - "hard_faults": 0, - "key": "22Y2adibhscn7noPkrv4cpiNYmV3Ft2d9WQrRygrttZhnFic4omqm9x1ViGQmm1voC71q99PqyG1SVrv8TFVgV84qx5babCVYdwSrESwFXL3NSeYs8ToiYZEYcQhZNmW8zM1", - "locked_amt": 0, - "reward": 29026385350, - "owner": { - "Account": "22Y2adibhscn7noPkrv4cpiNYmV3Ft2d9WQrRygrttZhnFic4omqm9x1ViGQmm1voC71q99PqyG1SVrv8TFVgV84qx5babCVYdwSrESwFXL3NSeYs8ToiYZEYcQhZNmW8zM1" - } - }, - { - "amount": 4750000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "22cV6z47RkVLMpimfQPeouFwfi8HUHXsG9tRvZq6AwyBETPuqFyxsrgrbEp3UnnaiN6719KjEFfbKijxDfLsCUrEpj4KC2N9CzYBdCA2mZkeKBC8hSBt7zWnVCrWusE581pv", - "locked_amt": 0, - "reward": 46959650586, - "owner": { - "Account": "22cV6z47RkVLMpimfQPeouFwfi8HUHXsG9tRvZq6AwyBETPuqFyxsrgrbEp3UnnaiN6719KjEFfbKijxDfLsCUrEpj4KC2N9CzYBdCA2mZkeKBC8hSBt7zWnVCrWusE581pv" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "22e4nDy3SHN1z6EQj7hQ9qwBASfoEXZ7PWgK1xYZGFsPXSNEBHEB4ntcLnDpYpePbjsuLFAUQC1YXTJdJN3bq9Gr6bwe24UiPXhZgxSHZPHspCeWTeoPiopw9zHkbhwBecjc", - "locked_amt": 0, - "reward": 6685578690172, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "22exgqwRRtryBxVT7f7xC27fBkcHjUbAA3BxqL9ySqDguJAaWY5UWtgVkcm3o8HE1Tf8qcfXNpBt7ezva3pLSaygVrrdnRktF4stZMDoLnUhy2ej1hnoKP91TyQrumkbUU4n", - "locked_amt": 0, - "reward": 7066191295983, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "22kT7LispVSAf7QVMukLaTTQC7yMdVja2FUvGaSqGgqfeFmHwk5CEzYYza82VR4pi5wLPQcQCkZzhpLT4ZftrjdxM5e3X7F7P1T4xTpS1WjSYL4jmeXe4ShMNgTxaC7zzYqx", - "locked_amt": 0, - "reward": 1707022241, - "owner": { - "Account": "22kT7LispVSAf7QVMukLaTTQC7yMdVja2FUvGaSqGgqfeFmHwk5CEzYYza82VR4pi5wLPQcQCkZzhpLT4ZftrjdxM5e3X7F7P1T4xTpS1WjSYL4jmeXe4ShMNgTxaC7zzYqx" - } - }, - { - "amount": 30000000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "22nTqwGqBUcbwXbuuQFpjZtjsFtJhRqktYavVdBASaor7tpcQLNcpLC7S2QRArCvw9hDYa7rNcb3jsJZzeLw7C9Kk56qT92bAFi6P4bpSqKvBtRHMCHJWmEaNGotZvGMYBGU", - "locked_amt": 0, - "reward": 148676341284, - "owner": { - "Account": "22nTqwGqBUcbwXbuuQFpjZtjsFtJhRqktYavVdBASaor7tpcQLNcpLC7S2QRArCvw9hDYa7rNcb3jsJZzeLw7C9Kk56qT92bAFi6P4bpSqKvBtRHMCHJWmEaNGotZvGMYBGU" - } - }, - { - "amount": 2494800000000, - "eligibility": 51840, - "faults": 4, - "hard_faults": 0, - "key": "22sM1aodiz758CdgA6FyDAa9zqKPrVUSdgZgwKZvGEYj9RGCZAubZEp4mMQKyWV8vwS11wWso6RU4wiMsgL6LuUnKM5zyNMW3nEoSBpBPucoaKyDw2W7W5rrCYW1i7xj1s1R", - "locked_amt": 2455200000000, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 14700000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "22tKrP4yhaGqq6AxvtPCQyMPXHQMsNraVi4ZQLyHnfcj1fF1zWFZG2LHcDaCCxLJ7btE2dkg7U8CEzUNFq95HhBKDvx9CfWiaB4BW6Zgwikj5oEoHBCNBjhE34cY3ZrFxM7K", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "238cmghibzsNoAhVYsXfmmgv4MCN88PWQMcmUTSbvTXJ1uFpqi4ejo74eNZQnve1xbwiLREyo4p2kReH49vV6gi6Wf137chzfiCMoG18LHBkTVxrwxWEinAyeQmd2QiVitV8", - "locked_amt": 0, - "reward": 7545523161920, - "owner": { - "Account": "238cmghibzsNoAhVYsXfmmgv4MCN88PWQMcmUTSbvTXJ1uFpqi4ejo74eNZQnve1xbwiLREyo4p2kReH49vV6gi6Wf137chzfiCMoG18LHBkTVxrwxWEinAyeQmd2QiVitV8" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23Bgd58Xr999Xt7cgh671Lr77H3en5C8SjMfg41NJEnvL7hyZdo7YUPtVHM9fLoT9jCNRnJXmMMeeL3B9Q7JMCPL6ByjEDJUPzruabShyfSZpNAd16rnJ34i4wNx9Biic8QN", - "locked_amt": 0, - "reward": 7880699523860, - "owner": { - "Account": "23Bgd58Xr999Xt7cgh671Lr77H3en5C8SjMfg41NJEnvL7hyZdo7YUPtVHM9fLoT9jCNRnJXmMMeeL3B9Q7JMCPL6ByjEDJUPzruabShyfSZpNAd16rnJ34i4wNx9Biic8QN" - } - }, - { - "amount": 4000000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "23F5qFXPz725XUY1mMy6KtJmgUJPDEpgW3PntEUTvKJUcoBnFy8EC1L8r1RgiGUVRsLbYPcoQNVBzQjuNqyzCPmZ3PGu7PnjYvDijqweTJg4b6qHqNvGMvmWedJQcdLuLhRL", - "locked_amt": 0, - "reward": 87840299414, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 21600, - "faults": 0, - "hard_faults": 0, - "key": "23LC6tza4TTm954oAXKHUdK7Z8RwVj6JtUTz6wc8Kni1s5f4tfPrFY5bD1XNuASKDf7NRHnUfbmycYHXVx1moTN6fr5zimBgnGAvRCAXTsyQFnDUG42LUu5oT8oCiKdrpnuS", - "locked_amt": 0, - "reward": 995135577, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 49680, - "faults": 0, - "hard_faults": 0, - "key": "23Xa3P7xtJxW3zYRjfiM1yRSQYN1Vt6aZ1V2gH7vnJkxBjEMvLz8dCkwvqQdraL7NGf9Asc1AAujEMabUz81wa3NizVDXy4ZqEWVb36URnYzTMjqPCVBbLcWZujGzAvwJiN2", - "locked_amt": 0, - "reward": 46540779, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23XeH9YWf68FhQX6wdHBjrdz4Yu2N9DuubrthX267FcdWaqPRyKwTnvYa2xRTaEJG2LBY96XzG4NRStHktt2ETZitSRN7ZjoKAe43EFKEZfCge4MCgoWYfMptWSqE9sZUzzE", - "locked_amt": 0, - "reward": 6880069718934, - "owner": { - "Account": "23XeH9YWf68FhQX6wdHBjrdz4Yu2N9DuubrthX267FcdWaqPRyKwTnvYa2xRTaEJG2LBY96XzG4NRStHktt2ETZitSRN7ZjoKAe43EFKEZfCge4MCgoWYfMptWSqE9sZUzzE" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23aykwjPGYfhwqkSWksDs1TmU2zkBgMn339shztJ14oXkUmwMcS1E7EMUaCg7HKpdAP4e3NuNruEEeN36t88f6oinwUPNaJqkTtLnPjH4yt2QJsssgpD8BRyusoLADWG7i5h", - "locked_amt": 0, - "reward": 7268548444440, - "owner": { - "Account": "23aykwjPGYfhwqkSWksDs1TmU2zkBgMn339shztJ14oXkUmwMcS1E7EMUaCg7HKpdAP4e3NuNruEEeN36t88f6oinwUPNaJqkTtLnPjH4yt2QJsssgpD8BRyusoLADWG7i5h" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23fAnih3A9TtZLmwBggRgjGHsEB9qyVTq25C1LahSVH2LigFdjLxveccFgnfQPxWUmMFLJDh8Ptd4NivosEK6pDZoAb48EirBaKqDEExh75iXDsr6k8hjFxV2hJhfGtYLFGr", - "locked_amt": 0, - "reward": 7217958614485, - "owner": { - "Account": "23fAnih3A9TtZLmwBggRgjGHsEB9qyVTq25C1LahSVH2LigFdjLxveccFgnfQPxWUmMFLJDh8Ptd4NivosEK6pDZoAb48EirBaKqDEExh75iXDsr6k8hjFxV2hJhfGtYLFGr" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23gx8TwJPoTxFppny5Py7JwH5bGSFfZq5igPYDgoJEg2qhzVgXAsGKsspfB3yWY7k428dH2yhyoXM8LB4vzvRBXmdUsMpYhWc73yvsHaBkwQqcvrZzJRUF7zxEMP5DKVzAFJ", - "locked_amt": 0, - "reward": 7469596802275, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23hcRjNqzKUhcHevbiP24NThLLbCjMXDFdwFXqgLjmx5cheXE6drSuSiuvvaSc7rbnbR2Yb1NY1x3276WVp47nFUM2ygmmERC4cxuF51aMqu75PVanouxfgmaHtFHjcHoHjj", - "locked_amt": 0, - "reward": 6776178368237, - "owner": { - "Account": "23hcRjNqzKUhcHevbiP24NThLLbCjMXDFdwFXqgLjmx5cheXE6drSuSiuvvaSc7rbnbR2Yb1NY1x3276WVp47nFUM2ygmmERC4cxuF51aMqu75PVanouxfgmaHtFHjcHoHjj" - } - }, - { - "amount": 1000000000000, - "eligibility": 38880, - "faults": 0, - "hard_faults": 0, - "key": "23izEEyhMKzmgR7J19vNtH8BDwafGib8XKEsc9NMmBLzLAhuMkqA3tx8ZYDLL2bY7jWNySkUHSg8YBQT1ZpYzEswY3YrtTTw12CzRPYyTUWjwKx8zhffUDPYCuPJpNXiAjUi", - "locked_amt": 0, - "reward": 325785453, - "owner": { - "Account": "23izEEyhMKzmgR7J19vNtH8BDwafGib8XKEsc9NMmBLzLAhuMkqA3tx8ZYDLL2bY7jWNySkUHSg8YBQT1ZpYzEswY3YrtTTw12CzRPYyTUWjwKx8zhffUDPYCuPJpNXiAjUi" - } - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 0, - "hard_faults": 0, - "key": "23soQKcC5qPi4eEhRsY8saEknqQGm24yXmyZDgrv7dF2LvXpLMhsm39Cfg3zahNwmgf1bpUHkHBAjMsbD3P7UNPvuGVUYvBLX4yvmJT7BtagrKJ8JQhVw78azNsfw4GCy5Fa", - "locked_amt": 0, - "reward": 667511609, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "23ws1motGfNRuZ4PJxN9DHnQxLTHMuKFfU97zgpFevcNXpbhesd7e5T2uxDc95tYkY2tgJC3EYfFjJXvRYFK2E2n8ogTjSW5NWurv1sarywLNGNkKqxzhyvSUsANqdRQBnzT", - "locked_amt": 0, - "reward": 7567266204238, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4500000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "23yK4TxQev3oLV9nYFS9PzhppZLDZGJh3BqNHA3uEnP1DtmL95oFE2dLWvY8Fj3gHNxmv9zAkjDkRdZEEgjVo4omyYtaNvDs83kv777NSr2DXhJegkbz1dHurp1k7un8ZR5W", - "locked_amt": 0, - "reward": 62054372, - "owner": { - "Account": "23yK4TxQev3oLV9nYFS9PzhppZLDZGJh3BqNHA3uEnP1DtmL95oFE2dLWvY8Fj3gHNxmv9zAkjDkRdZEEgjVo4omyYtaNvDs83kv777NSr2DXhJegkbz1dHurp1k7un8ZR5W" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "244Sywxj7PuMHpcPxemaXLcrY5rPgztra6H9Vz8cU1Ro5v23SxKTfVqr2yS7NXAXE1iq59ndn4aMZmYxuzu3Te3e9fokQKTUkYvFxYg2P2E8EEg1gWUbs3AFL2aNx62HQd7r", - "locked_amt": 0, - "reward": 7181940088941, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "244h5qgZaU8S6GttT5zL1K56xecr4YrddWLd5HzByB15uhcJS5V6J1m5H5ewTTHJj3ywTMUrbFV8Ku1QpMEVPziLu3fK67Ry7xrcBcpsmG7CnYH2ww1JoVA92Ar22hPjVFZ3", - "locked_amt": 0, - "reward": 1057189949, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "248rpHWnGPT3puKGBB4CHdaHDnkFU8vaBNCUzV2bJ7JTyXA875PFPAUaFuUrMvmZd5PmBTPx5FhvBoPcddZhn7f97gmiPEpvs5zHEHbhfmWad176yKGwKkA5pvNDeXfEf9Lp", - "locked_amt": 0, - "reward": 7281601926239, - "owner": { - "Account": "248rpHWnGPT3puKGBB4CHdaHDnkFU8vaBNCUzV2bJ7JTyXA875PFPAUaFuUrMvmZd5PmBTPx5FhvBoPcddZhn7f97gmiPEpvs5zHEHbhfmWad176yKGwKkA5pvNDeXfEf9Lp" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24APW8dZ91iy4kwVAFAZ8rDRg8tZtLuurUB2aERXUKRj5tEMQQhTHQp2p5oxKtZNrpcWUKidK6u9tHTSZy9mzWnKtwu5Hnf1s42bdG4tcZw8edJPzePVWRytGoUXMHmuWWG3", - "locked_amt": 0, - "reward": 7080292530410, - "owner": { - "Account": "24APW8dZ91iy4kwVAFAZ8rDRg8tZtLuurUB2aERXUKRj5tEMQQhTHQp2p5oxKtZNrpcWUKidK6u9tHTSZy9mzWnKtwu5Hnf1s42bdG4tcZw8edJPzePVWRytGoUXMHmuWWG3" - } - }, - { - "amount": 19995000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "24LaJTrgM9dczt1eRXjxeTdg1pGoyiGTGqWmdQrTfN8XwXD61ooEGiifhMDFcRZ6ZJyuniwwy9GtUUQAxzkGT8YHF71NrUn9fnaaBNfMCDZTpnmkK4JihDyuPoSLjQQDPbzE", - "locked_amt": 0, - "reward": 51527623616, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24Qzcp49pQt8Rb1bWf65Yq76QysTfyQKUZh7C219345iD6eYfHKptxxAKrqGYLFXKUci3NR5FbLhFjmLnL4jf249hwZK19gY2nqKESbSyfkMVMQHpS5dVVcN2my1KWR3jha4", - "locked_amt": 0, - "reward": 7472061603093, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24TMiKLMRMv8BJFoGxHGVcHQoqkoEhcEAFDvBmM6iQ6TK3oyeiXSTYdQZSvad8AYaQcfvLSetJg2urFtDJJu5WgakYoXzm2HdwuotouiFCBdWsKe8dVhZgN7ERYhcxKr7LTd", - "locked_amt": 0, - "reward": 6977070492446, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 15000000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "24Ujm5AZ1JfSXe1PsVohP4aeuFRRM3TY9sHVULR5WKh7qkK5JxVR7xJBSEFDd81bsFtTFXq9ANuiEEF9jZRVDVHEWSXVmS249fkgc3KnxWse2wrQrVGLmDLzNtySddyiJuCS", - "locked_amt": 0, - "reward": 248217488, - "owner": { - "Account": "24Ujm5AZ1JfSXe1PsVohP4aeuFRRM3TY9sHVULR5WKh7qkK5JxVR7xJBSEFDd81bsFtTFXq9ANuiEEF9jZRVDVHEWSXVmS249fkgc3KnxWse2wrQrVGLmDLzNtySddyiJuCS" - } - }, - { - "amount": 19500000000000, - "eligibility": 47520, - "faults": 0, - "hard_faults": 0, - "key": "24YAJKhrrTrjYAiFD1m5ezRLZHsRPcSSDRMZhxbtsZPpBCM8usafREJWuzZn2hZHZqL1BQyDkGa3BiQ8T6CLfnXBLzjhFLq32djemxUwkuPq2eXEaZw3XrGxoNBGnUw47cJo", - "locked_amt": 0, - "reward": 3180286565, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24YhQRLs3Yv9ChjpwshFQAFqxmYNMzvFynpcGvEYXUCz33whjrQbX4yRvMwSTL5vEivpx8Enm8cxhDeGxXkQRrxtkzZ1WERnBLtz4JsBf6m5QmQzUziTKiofZnRHFRm5zQ1z", - "locked_amt": 0, - "reward": 7276764391833, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 23760, - "faults": 1, - "hard_faults": 0, - "key": "24bFF8fUoMPZ5JVfdFrcQUea81um2yieXb2v8Q3mWgpHCNRiStP11tYdpgHmQAi7yu6pru8ywsAhEbxRTGnLhw6VYnT3iQKtSi6xPka5XPRRAfFmwP99GxgA1b9c5yWYVQB7", - "locked_amt": 0, - "reward": 0, - "owner": { - "Account": "24bFF8fUoMPZ5JVfdFrcQUea81um2yieXb2v8Q3mWgpHCNRiStP11tYdpgHmQAi7yu6pru8ywsAhEbxRTGnLhw6VYnT3iQKtSi6xPka5XPRRAfFmwP99GxgA1b9c5yWYVQB7" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "24bfNr8MDUo5xJBecmeGzXDEraax4Cmbnhjyyt5GaL1Vbe6H48ZSYTpmjRDcFRDFzgzuePAPUNcdGMnBzBQBk4zAMgBCtPsY27tBJtKmB1st6qcmpzRR4Er5imxrzvMRnfWc", - "locked_amt": 0, - "reward": 7558684314227, - "owner": { - "Account": "24bfNr8MDUo5xJBecmeGzXDEraax4Cmbnhjyyt5GaL1Vbe6H48ZSYTpmjRDcFRDFzgzuePAPUNcdGMnBzBQBk4zAMgBCtPsY27tBJtKmB1st6qcmpzRR4Er5imxrzvMRnfWc" - } - }, - { - "amount": 4000000000000, - "eligibility": 4320, - "faults": 0, - "hard_faults": 0, - "key": "254ZiKWavWqYmoo2jw2QpGXtkUZs9nYY2dVbSkKeHpGiWPxNJfwVyp6erZLcuuad4fRTzyqvyRT71fLQ3UdSHfWUPVckWP9GaJX2pee7F4mgq3UGThncSx8sNvjW47gHPWd5", - "locked_amt": 0, - "reward": 1225593829, - "owner": { - "Account": "254ZiKWavWqYmoo2jw2QpGXtkUZs9nYY2dVbSkKeHpGiWPxNJfwVyp6erZLcuuad4fRTzyqvyRT71fLQ3UdSHfWUPVckWP9GaJX2pee7F4mgq3UGThncSx8sNvjW47gHPWd5" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25A9dZXaWhLsPtgyfxNtdqpdrNkHzk7C3mJxGgq64NrRd5HhAQab59n6H5hLjkQgJvJWZbuZEm8GQ4UvtdRzXzB6nt8CMHWaNURLmhTzCnxuxCmJf5ws5WxiSUEEUHxaCYvb", - "locked_amt": 0, - "reward": 7607325040606, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25HZa8omGsExfeeGBcege198RY5mx9fpGsuA3rDUamqCr96tBeprRbm1d1YL1Mr4HXi1YuFJ1ozH9CFRSauaEigtEatc7t321KffgxzFXRQaE8DD83P7NphwANV3jVhFdYa7", - "locked_amt": 0, - "reward": 7410817629537, - "owner": { - "Account": "25HZa8omGsExfeeGBcege198RY5mx9fpGsuA3rDUamqCr96tBeprRbm1d1YL1Mr4HXi1YuFJ1ozH9CFRSauaEigtEatc7t321KffgxzFXRQaE8DD83P7NphwANV3jVhFdYa7" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25J8LTkT3fj2a5qeRvxCRiXgakMqivtmB4iLzfJqrS3nvtpK1KEZcWrybMcRb7pgmcVepQTEoxTBQwHTvo9ZC7wrXyUVcpGrBSvJwxJxNYM68N8VwwWaBzjgnFTDEEy3hE3H", - "locked_amt": 0, - "reward": 7301740226967, - "owner": { - "Account": "25J8LTkT3fj2a5qeRvxCRiXgakMqivtmB4iLzfJqrS3nvtpK1KEZcWrybMcRb7pgmcVepQTEoxTBQwHTvo9ZC7wrXyUVcpGrBSvJwxJxNYM68N8VwwWaBzjgnFTDEEy3hE3H" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25KnsEoBhedA6Gnyx67c2i69h3iYJFErFdKVWZygVPgsyc7b5Hz1X6pP1NUREt9DQ9byVxkHtwmoG1Lhirr1QGG1vLLEd6AT8k5HWqZSisqvPexAzzxX63xCGwkW4ZiR2AhL", - "locked_amt": 0, - "reward": 7913298597306, - "owner": { - "Account": "25KnsEoBhedA6Gnyx67c2i69h3iYJFErFdKVWZygVPgsyc7b5Hz1X6pP1NUREt9DQ9byVxkHtwmoG1Lhirr1QGG1vLLEd6AT8k5HWqZSisqvPexAzzxX63xCGwkW4ZiR2AhL" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25L2qjS7difo6T1PW871rjnqjQenGCYTVmNZGAoJBqjdaBDNpbJyfo6x16kHjiwaB1eP4k7JzFhz7BCxE83xeYKDAU6rZDr3JeMsTrnJHTfcSCuuskbtL3xhW99qJjG53cQM", - "locked_amt": 0, - "reward": 7081272543114, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25MjwFViKFCofcwqP9z7Em7hLzx9E9tou7tS9X3SDvzJvRWUixMZmHWQMDNnJZNN8PdzLBy9sj3wjscR4aADVNM7WqMnGfZxNdRAh4nWdW5wpAH8Dqn2hGTLE6kCUcKSMZE4", - "locked_amt": 0, - "reward": 7339003398621, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4900000000000, - "eligibility": 6480, - "faults": 0, - "hard_faults": 0, - "key": "25Q7QA1w5MS3cJaurwu7YnezymMt4gt8JwjLdRwUFfF8BLCERdSNpDfNbV54R28GFzPP5vjBPnw1iUYxSaomSdXa64FwZz4XgaZcEeF3RB5jn7Spvbe9qXAMf9grR6vAi5p1", - "locked_amt": 0, - "reward": 103836672999, - "owner": { - "Account": "25Q7QA1w5MS3cJaurwu7YnezymMt4gt8JwjLdRwUFfF8BLCERdSNpDfNbV54R28GFzPP5vjBPnw1iUYxSaomSdXa64FwZz4XgaZcEeF3RB5jn7Spvbe9qXAMf9grR6vAi5p1" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25RHcLU8DPEnZm2iXy9qvQj5aDCcpE4B9KJT9VGZS24Qsv3vpbrN7b72Wj7YBH66aXNjm6i2URSQQnpdvQLFp6R7Jt85b8DJVHFrQHvhH35Z2xQXqtLk4Whgng6N4gqgq9h7", - "locked_amt": 0, - "reward": 6931001245450, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25h5BvLgTAJ57DS4z4fuBJhj17k4iBfEQT6YMbzWPWuFfhUufVfU9ryohapjkA7rkb7xBtCfULZic2eJmCGssKdW2DCfBez26yXUy1qhRBnLQ4QCFadfM96tbUURoVYyYfWJ", - "locked_amt": 0, - "reward": 7241109562888, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25hHuGqH6MU67syGovZD2L1eEBypLb7fCV2Q7inVWSYSWqto9Yr962rfsUjL5WZjGBwa9EkFf7eBcouKRKNvhYrm7LPRQk6k4JR45KtnKUjXgdDTsmYJ4G49V4o3pT5aGdMP", - "locked_amt": 0, - "reward": 6811442642016, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 3528000000000, - "eligibility": 56160, - "faults": 3, - "hard_faults": 0, - "key": "25iyRWkrjAy6XKcroW4JQNxkoitsN8HsgDbCyP1gUYXrfLVJaTDKjeTsVEWniw3o316ADgEecWpcSkMBrFaztbvDMRJu3HwNyTpP3E8v4ecAQF3sXGVFvFVZsbxUibGqJFvF", - "locked_amt": 1372000000000, - "reward": 0, - "owner": { - "Account": "25iyRWkrjAy6XKcroW4JQNxkoitsN8HsgDbCyP1gUYXrfLVJaTDKjeTsVEWniw3o316ADgEecWpcSkMBrFaztbvDMRJu3HwNyTpP3E8v4ecAQF3sXGVFvFVZsbxUibGqJFvF" - } - }, - { - "amount": 14900000000000, - "eligibility": 54000, - "faults": 0, - "hard_faults": 0, - "key": "25qis7vbcPSTuxaAtrmidrjQ2uHrwJ2LTmZTzDJDiytTnnFg67KDgDE4bmPJYatGDH9RcaM194eHZUUUQQ8VPhUVN6yzFH8KxVUWU3CYw2i9dEWtjigRSJ4mnhAvsZzBMo9V", - "locked_amt": 0, - "reward": 1256601106, - "owner": { - "Account": "25qis7vbcPSTuxaAtrmidrjQ2uHrwJ2LTmZTzDJDiytTnnFg67KDgDE4bmPJYatGDH9RcaM194eHZUUUQQ8VPhUVN6yzFH8KxVUWU3CYw2i9dEWtjigRSJ4mnhAvsZzBMo9V" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "25yVrGJKTjZzfiHewWbShsU5s2CpuUGfqG17YLt2sf158fc1EJJEYHnPJKFPjoTXYxe1jJymaYoRbnZ1hSCa1uvdsox36mgoKiBQsw2pVUbWmodz5D2EBzrtBKABBKkrChbK", - "locked_amt": 0, - "reward": 7127400279825, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4990000000000, - "eligibility": 51840, - "faults": 0, - "hard_faults": 0, - "key": "261taMMBXpRG7T74sHjLyJLyag55JqFKwkfBs9S8NVKLjsjFUT7nJvkxCjd888kyMdEaesKZ9CDrdYRfJ4NwSMLsYo9rXpyqd7utDf73P81Shj1TDdCvAJdmY9ScyEGsQpMJ", - "locked_amt": 0, - "reward": 527462162, - "owner": { - "Account": "261taMMBXpRG7T74sHjLyJLyag55JqFKwkfBs9S8NVKLjsjFUT7nJvkxCjd888kyMdEaesKZ9CDrdYRfJ4NwSMLsYo9rXpyqd7utDf73P81Shj1TDdCvAJdmY9ScyEGsQpMJ" - } - }, - { - "amount": 4900000000000, - "eligibility": 30240, - "faults": 0, - "hard_faults": 0, - "key": "262ZminCbPCFP6Cq5LfzWd8h58CJ1dRKKmV59RVYRhug4ymFFZ94sTzDqQhKKQj4Ef3a8SBAP1TcfM15HCGTEeaT3jHeFJwHQS3agTbcjVTcsPzfg5cgmsSLHkSBfJ3ret9Z", - "locked_amt": 0, - "reward": 58878012343, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY", - "locked_amt": 0, - "reward": 7662628745173, - "owner": { - "Account": "2681cRrpmrN17r1C1jNKNqAL6xc7mCTNu9qwhtjTVNHiaVioqowCcTcMqXcmYuqpG8c22bPqKWDRfRmzcfSnLLA9GG5jdgBhmoQxSAqaXMUL2Ee5LAGMB5RJycuUcDoHTCwY" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26DsWXiCrNxkmCZ1zfCh3XTE2cXqf4NEPGGRMU39vZhNYF6hExrRrzN4nETVYduLuiRAHmtonkP6TvtVnhf9v5YcksgUfhHY78dNgCTSZs9WgHjN4NP2QRiybAaH3xUGeatm", - "locked_amt": 0, - "reward": 6792420959548, - "owner": { - "Account": "26DsWXiCrNxkmCZ1zfCh3XTE2cXqf4NEPGGRMU39vZhNYF6hExrRrzN4nETVYduLuiRAHmtonkP6TvtVnhf9v5YcksgUfhHY78dNgCTSZs9WgHjN4NP2QRiybAaH3xUGeatm" - } - }, - { - "amount": 450000000000000, - "eligibility": 10800, - "faults": 0, - "hard_faults": 0, - "key": "26KjFyAKT9sMsASS2GTdrAgBswwwUvDAWwRdHWz2Hxp1BLa5VaD5LPAEPocHzsV4CEq3AM66qhUPAsB45FjsYzJB4wVU55ibUT3CNY8SxTgRfbVBpy5BSa4SDmZ7xff7cFJH", - "locked_amt": 50000000000000, - "reward": 5972684252228, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 360000000000000, - "eligibility": 58320, - "faults": 3, - "hard_faults": 0, - "key": "26LZQDrSNPHgv5HkBdFhYr5TEm3y9zDwceotnywHg9Dproqd3yHymHZskEFxjSStfyyqNo1vvAF1h4nEXEy378W87EQ1p7EC9rfES65C6xGQDS7ujQCAPMoQBp3F6dopZk4i", - "locked_amt": 140000000000000, - "reward": 7310999841539, - "owner": { - "Account": "26LZQDrSNPHgv5HkBdFhYr5TEm3y9zDwceotnywHg9Dproqd3yHymHZskEFxjSStfyyqNo1vvAF1h4nEXEy378W87EQ1p7EC9rfES65C6xGQDS7ujQCAPMoQBp3F6dopZk4i" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26LsKrN6Rk4UPALU6msRjkdu5tdSsoNtudcMSvz8Xa2jmp6gDCv964yf7rq4SC4bHDCuoT28KBS8989WfTjBuxTdYqQhCswDL1MiDhXBvraiWPX9Hjhvi1X4pbs757sHYXGb", - "locked_amt": 0, - "reward": 7084882997029, - "owner": { - "Account": "26LsKrN6Rk4UPALU6msRjkdu5tdSsoNtudcMSvz8Xa2jmp6gDCv964yf7rq4SC4bHDCuoT28KBS8989WfTjBuxTdYqQhCswDL1MiDhXBvraiWPX9Hjhvi1X4pbs757sHYXGb" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26N7gdQRjgw9atu8nN5ua1bfxBp7kdNvE5BRHUvaMFGjwrNcRrDNedhK2RrqVooRJ8SMGi1iYiW4Wnysx4SMcbUPffwNeY4T1wQLt5ESdYjh91exuhR15S9c3o7Eu6EZNudz", - "locked_amt": 0, - "reward": 7122737082704, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26TVUnyxdYwX3Sipc2RLAwGnE6gLHW86sudf2HU3xP8S7NbAoiJDUE2XTn1FaEKV32FvZpCf9SjsgkYatddn6BsoBhMTmXyd1TMpzgFyJ8rGNXNN2R9LBuHfCXoXXj3MtNJr", - "locked_amt": 0, - "reward": 6873120849995, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 1000000000000, - "eligibility": 12960, - "faults": 0, - "hard_faults": 0, - "key": "26ZZshg4skq2rrJQMw4WuXe9igNvUFeZtxBQw9qii3wZu4GKRjMoAxKGRefBoR1vy4Cs6vPihSw9iPBzVy4EBu8m2CaMemPSD3gwr8VFzTkqMoBEjs5Tr5et1rirWmgevM76", - "locked_amt": 0, - "reward": 28762941510, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26brdzqNXEG1jTzCubJAPhks18bSSDY4n21ZW6VLYkCv6bBUdBAZZAbn1Coz1LPBYc4uEekBbzFnZvhL9untGCqRamhZS2cBV51fdZog3qkP3NbMEaqgNMcKEahAFV8t2Cke", - "locked_amt": 0, - "reward": 7630941111854, - "owner": { - "Account": "26brdzqNXEG1jTzCubJAPhks18bSSDY4n21ZW6VLYkCv6bBUdBAZZAbn1Coz1LPBYc4uEekBbzFnZvhL9untGCqRamhZS2cBV51fdZog3qkP3NbMEaqgNMcKEahAFV8t2Cke" - } - }, - { - "amount": 1000000000000, - "eligibility": 32400, - "faults": 1, - "hard_faults": 0, - "key": "26p1CyNua6GzUW5gaLZY1suFiThGbZEEuLKJMXH1NsuQbd3tFwq2wLAMd7vMP5fhD3M83yA1GtzqqmqiwoHpJ5YXamCfjYfj6Jkq6fhGc2xtFFXmVfWC3tVoz3qd3yqSbUgu", - "locked_amt": 0, - "reward": 0, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 4500000000000, - "eligibility": 25920, - "faults": 0, - "hard_faults": 0, - "key": "26q6wyM9QDhY9k5eZkCRRDaSkHXPzQKYxvPVSEcTYW2sPdzzxdAqP7R7uVxtyNeqQKVypj8kbaQGXYWqYcBg6kAtDTKm84Dxgbj4ZwjqgoWjXb5MS3R6vcXvwBNd51neQn7a", - "locked_amt": 0, - "reward": 30968992591, - "owner": { - "Contract": "0200000000000000000000000000000000000000000000000000000000000000" - } - }, - { - "amount": 500000000000000, - "eligibility": 0, - "faults": 0, - "hard_faults": 0, - "key": "26zCm7Hqi4Gv42D39zx9p8tG1aHDuVRaYABpNGdmcusWJchmTRRHtagWFZo76SMyCUui3JvnFRNekNu6WShm6mW9F8uEucUau8H3cCpm1osc4gZLd8WaCaGzWV2gvt8dhyga", - "locked_amt": 0, - "reward": 7199704091617, - "owner": { - "Account": "26zCm7Hqi4Gv42D39zx9p8tG1aHDuVRaYABpNGdmcusWJchmTRRHtagWFZo76SMyCUui3JvnFRNekNu6WShm6mW9F8uEucUau8H3cCpm1osc4gZLd8WaCaGzWV2gvt8dhyga" - } - } -] diff --git a/explorer/src/lib/mock-data/host.d.ts b/explorer/src/lib/mock-data/host.d.ts deleted file mode 100644 index c08a827997..0000000000 --- a/explorer/src/lib/mock-data/host.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -type HostProvisioner = { - amount: number; - eligibility: number; - faults: number; - hard_faults: number; - key: string; - locked_amt: number; - owner: { Account: string } | { Contract: string }; - reward: number; -}; diff --git a/explorer/src/lib/mock-data/index.js b/explorer/src/lib/mock-data/index.js deleted file mode 100644 index 7f0a4bd87e..0000000000 --- a/explorer/src/lib/mock-data/index.js +++ /dev/null @@ -1,18 +0,0 @@ -export { default as apiMarketData } from "./api-market-data.json"; -export { default as apiNodeInfo } from "./api-node-info.json"; -export { default as apiNodeLocations } from "./api-node-locations.json"; -export { default as apiStats } from "./api-stats.json"; -export { default as enrichedProvisioners } from "./enriched-provisioners.json"; -export { default as gqlBlock } from "./gql-block.json"; -export { default as gqlBlockDetails } from "./gql-block-details.json"; -export { default as gqlBlocks } from "./gql-blocks.json"; -export { default as gqlLatestChainInfo } from "./gql-latest-chain-info.json"; -export { default as gqlSearchPossibleResults } from "./gql-search-possible-results.json"; -export { default as gqlTransaction } from "./gql-transaction.json"; -export { default as gqlTransactions } from "./gql-transactions.json"; -export { default as hostProvisioners } from "./host-provisioners.json"; -export { default as nodeLocationsCount } from "./node-locations.count.json"; - -export { default as accounts } from "./accounts.json"; -export { default as tokens } from "./tokens.json"; -export { default as gqlTokenTransactions } from "./gql-token-transactions.json"; diff --git a/explorer/src/lib/mock-data/node-locations.count.json b/explorer/src/lib/mock-data/node-locations.count.json deleted file mode 100644 index 8d5952f050..0000000000 --- a/explorer/src/lib/mock-data/node-locations.count.json +++ /dev/null @@ -1,170 +0,0 @@ -[ - { - "city": "North Bergen", - "country": "United States", - "countryCode": "US", - "lat": 40.793, - "lon": -74.0247, - "count": 15 - }, - { - "city": "Amsterdam", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 52.352, - "lon": 4.9392, - "count": 15 - }, - { - "city": "Santa Clara", - "country": "United States", - "countryCode": "US", - "lat": 37.3931, - "lon": -121.962, - "count": 11 - }, - { - "city": "Frankfurt am Main", - "country": "Germany", - "countryCode": "DE", - "lat": 50.1169, - "lon": 8.6837, - "count": 9 - }, - { - "city": "Clifton", - "country": "United States", - "countryCode": "US", - "lat": 40.8364, - "lon": -74.1403, - "count": 9 - }, - { - "city": "Portsmouth", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 50.8544, - "lon": -1.002, - "count": 6 - }, - { - "city": "Singapore", - "country": "Singapore", - "countryCode": "SG", - "lat": 1.32123, - "lon": 103.695, - "count": 5 - }, - { - "city": "Nuremberg", - "country": "Germany", - "countryCode": "DE", - "lat": 49.405, - "lon": 11.1617, - "count": 4 - }, - { - "city": "Helsinki", - "country": "Finland", - "countryCode": "FI", - "lat": 60.1797, - "lon": 24.9344, - "count": 2 - }, - { - "city": "Alexandria", - "country": "Australia", - "countryCode": "AU", - "lat": -33.9088, - "lon": 151.196, - "count": 1 - }, - { - "city": "Milan", - "country": "Italy", - "countryCode": "IT", - "lat": 45.4722, - "lon": 9.1922, - "count": 1 - }, - { - "city": "Sydney", - "country": "Australia", - "countryCode": "AU", - "lat": -33.808, - "lon": 151.1415, - "count": 1 - }, - { - "city": "Hillsboro", - "country": "United States", - "countryCode": "US", - "lat": 45.5397, - "lon": -122.9638, - "count": 1 - }, - { - "city": "St Louis", - "country": "United States", - "countryCode": "US", - "lat": 38.6364, - "lon": -90.1985, - "count": 1 - }, - { - "city": "Slough", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 51.5368, - "lon": -0.6718, - "count": 1 - }, - { - "city": "Seattle", - "country": "United States", - "countryCode": "US", - "lat": 47.3066, - "lon": -122.2619, - "count": 1 - }, - { - "city": "Limerick", - "country": "Ireland", - "countryCode": "IE", - "lat": 52.6669, - "lon": -8.6274, - "count": 1 - }, - { - "city": "Falkenstein", - "country": "Germany", - "countryCode": "DE", - "lat": 50.4777, - "lon": 12.3649, - "count": 1 - }, - { - "city": "Paris", - "country": "France", - "countryCode": "FR", - "lat": 48.8323, - "lon": 2.4075, - "count": 1 - }, - { - "city": "Newcastle upon Tyne", - "country": "United Kingdom", - "countryCode": "GB", - "lat": 54.9958, - "lon": -1.6897, - "count": 1 - }, - { - "city": "Sneek", - "country": "The Netherlands", - "countryCode": "NL", - "lat": 53.0366, - "lon": 5.6858, - "count": 1 - } -] diff --git a/explorer/src/lib/mock-data/token.d.ts b/explorer/src/lib/mock-data/token.d.ts deleted file mode 100644 index bc5a4657b5..0000000000 --- a/explorer/src/lib/mock-data/token.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -type Token = { - token: string; - totalCurrentSupply: string; - maxCirculatingSupply: string; - ticker: string; - contractId: string; - price: string; -}; diff --git a/explorer/src/lib/mock-data/tokens.json b/explorer/src/lib/mock-data/tokens.json deleted file mode 100644 index c4f2329ca5..0000000000 --- a/explorer/src/lib/mock-data/tokens.json +++ /dev/null @@ -1,66 +0,0 @@ -[ - { - "token": "Ethereum", - "totalCurrentSupply": "120,000,000", - "maxCirculatingSupply": "∞", - "ticker": "ETH", - "contractId": "0x123abc456def789ghi123jkl456mno789pqr012stu345vwx678yz", - "price": "3,200.50" - }, - { - "token": "Bitcoin", - "totalCurrentSupply": "19,500,000", - "maxCirculatingSupply": "21,000,000", - "ticker": "BTC", - "contractId": "N/A", - "price": "42,500.75" - }, - { - "token": "Solana", - "totalCurrentSupply": "550,000,000", - "maxCirculatingSupply": "∞", - "ticker": "SOL", - "contractId": "0x789ghi123jkl456mno789pqr012stu345vwx678yzabc123def456", - "price": "150.25" - }, - { - "token": "USDC", - "totalCurrentSupply": "32,000,000,000", - "maxCirculatingSupply": "∞", - "ticker": "USDC", - "contractId": "0x987xyz654mno321stu456vwx789pqr012abc345def678ghi123jkl", - "price": "1.00" - }, - { - "token": "Polygon", - "totalCurrentSupply": "9,300,000,000", - "maxCirculatingSupply": "10,000,000,000", - "ticker": "MATIC", - "contractId": "0x456uvw321rst852zxc147bnd963qwe258lop357mnb741poi963lkj", - "price": "1.75" - }, - { - "token": "Dai", - "totalCurrentSupply": "5,000,000,000", - "maxCirculatingSupply": "∞", - "ticker": "DAI", - "contractId": "0x321abc654def789ghi123jkl456mno789pqr012stu345vwx678yz", - "price": "1.00" - }, - { - "token": "Chainlink", - "totalCurrentSupply": "467,000,000", - "maxCirculatingSupply": "1,000,000,000", - "ticker": "LINK", - "contractId": "0x963qwe852rty147bnm258lop357mnb741poi963lkj654def789ghi", - "price": "17.60" - }, - { - "token": "Avalanche", - "totalCurrentSupply": "377,000,000", - "maxCirculatingSupply": "720,000,000", - "ticker": "AVAX", - "contractId": "0x852zxc147bnd963qwe258lop357mnb741poi963lkj321rst456uvw", - "price": "35.40" - } -] diff --git a/explorer/src/lib/navigation/__tests__/addBasePath.spec.js b/explorer/src/lib/navigation/__tests__/addBasePath.spec.js deleted file mode 100644 index 1cccf0107c..0000000000 --- a/explorer/src/lib/navigation/__tests__/addBasePath.spec.js +++ /dev/null @@ -1,22 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { base } from "$app/paths"; - -import { addBasePath } from ".."; - -describe("addBasePath", () => { - it("should add the base path to the received path if the received one is an absolute path", () => { - expect(addBasePath("/")).toBe(`${base}/`); - expect(addBasePath("/some-path")).toBe(`${base}/some-path`); - }); - - it("should add nothing if the received path is a relative one or a complete string URL", () => { - expect(addBasePath("foo/bar")).toBe("foo/bar"); - expect(addBasePath("http://example.com/")).toBe("http://example.com/"); - }); - - it("should add nothing if the received path is a URL object", () => { - const url = new URL("http://www.example.com/"); - - expect(addBasePath(url)).toBe(url); - }); -}); diff --git a/explorer/src/lib/navigation/__tests__/goto.spec.js b/explorer/src/lib/navigation/__tests__/goto.spec.js deleted file mode 100644 index 23f706316a..0000000000 --- a/explorer/src/lib/navigation/__tests__/goto.spec.js +++ /dev/null @@ -1,44 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import * as appNavigation from "$app/navigation"; -import { base } from "$app/paths"; - -import { goto } from ".."; - -describe("goto", () => { - const gotoSpy = vi.spyOn(appNavigation, "goto"); - - afterEach(() => { - gotoSpy.mockClear(); - }); - - afterAll(() => { - gotoSpy.mockRestore(); - }); - - it("should add the defined base path to Svelte's `goto` calls for absolute paths", async () => { - await goto("/"); - await goto("/foo/path"); - - expect(gotoSpy).toHaveBeenCalledTimes(2); - expect(gotoSpy).toHaveBeenNthCalledWith(1, `${base}/`); - expect(gotoSpy).toHaveBeenNthCalledWith(2, `${base}/foo/path`); - }); - - it("should add nothing for relative paths and complete string URLs", async () => { - await goto("foo/bar"); - await goto("http://example.com/"); - - expect(gotoSpy).toHaveBeenCalledTimes(2); - expect(gotoSpy).toHaveBeenNthCalledWith(1, "foo/bar"); - expect(gotoSpy).toHaveBeenNthCalledWith(2, "http://example.com/"); - }); - - it("should do nothing if the received path is an URL object", async () => { - const url = new URL("http://www.example.com/"); - - await goto(url); - - expect(gotoSpy).toHaveBeenCalledTimes(1); - expect(gotoSpy).toHaveBeenCalledWith(url); - }); -}); diff --git a/explorer/src/lib/navigation/addBasePath.js b/explorer/src/lib/navigation/addBasePath.js deleted file mode 100644 index 39241e24d2..0000000000 --- a/explorer/src/lib/navigation/addBasePath.js +++ /dev/null @@ -1,10 +0,0 @@ -import { base } from "$app/paths"; - -/** - * @template {string | URL} T - * @param {T} path - */ -const addBasePath = (path) => - path instanceof URL ? path : path.startsWith("/") ? `${base}${path}` : path; - -export default addBasePath; diff --git a/explorer/src/lib/navigation/goto.js b/explorer/src/lib/navigation/goto.js deleted file mode 100644 index 5bb95d3d33..0000000000 --- a/explorer/src/lib/navigation/goto.js +++ /dev/null @@ -1,8 +0,0 @@ -import { goto as svelteGoto } from "$app/navigation"; - -import addBasePath from "./addBasePath"; - -/** @type {(...args: Parameters) => ReturnType} */ -const goto = (url, ...rest) => svelteGoto(addBasePath(url), ...rest); - -export default goto; diff --git a/explorer/src/lib/navigation/index.js b/explorer/src/lib/navigation/index.js deleted file mode 100644 index bdb269b478..0000000000 --- a/explorer/src/lib/navigation/index.js +++ /dev/null @@ -1,2 +0,0 @@ -export { default as addBasePath } from "./addBasePath"; -export { default as goto } from "./goto"; diff --git a/explorer/src/lib/node-location/node-location.d.ts b/explorer/src/lib/node-location/node-location.d.ts deleted file mode 100644 index e3f6de9d0b..0000000000 --- a/explorer/src/lib/node-location/node-location.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -type NodeLocation = { - lat: number; - lon: number; - city: string; - count: number; - country: string; - countryCode: string; -}; diff --git a/explorer/src/lib/services/__tests__/duskAPI.spec.js b/explorer/src/lib/services/__tests__/duskAPI.spec.js deleted file mode 100644 index bd28265723..0000000000 --- a/explorer/src/lib/services/__tests__/duskAPI.spec.js +++ /dev/null @@ -1,630 +0,0 @@ -import { afterAll, afterEach, describe, expect, it, vi } from "vitest"; -import { skip, updatePathIn } from "lamb"; - -import * as mockData from "$lib/mock-data"; - -import { - addCountAndUnique, - calculateStats, - transformBlock, - transformSearchResult, - transformTransaction, -} from "$lib/chain-info"; - -import { duskAPI } from ".."; - -describe("duskAPI", () => { - const fetchSpy = vi.spyOn(global, "fetch"); - const node = new URL(import.meta.env.VITE_NODE_URL, import.meta.url); - const fakeID = "some-id"; - const apiGetOptions = { - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - }, - method: "GET", - }; - - /** @type {URL} */ - const gqlExpectedURL = new URL("/on/graphql/query", node); - - /** @type {(data: Record | number) => Response} */ - const makeOKResponse = (data) => - new Response(JSON.stringify(data), { status: 200 }); - - afterEach(() => { - fetchSpy.mockClear(); - }); - - afterAll(() => { - fetchSpy.mockRestore(); - }); - - it("should expose a method to retrieve a single block", async () => { - const getByHeightSpy = vi.spyOn(duskAPI, "getBlockHashByHeight"); - - fetchSpy - .mockResolvedValueOnce( - makeOKResponse( - updatePathIn( - mockData.gqlBlock, - "block.header", - skip(["nextBlockHash"]) - ) - ) - ) - .mockResolvedValueOnce( - makeOKResponse({ - block: { - header: { - hash: mockData.gqlBlock.block.header.nextBlockHash, - }, - }, - }) - ); - - await expect(duskAPI.getBlock(fakeID)).resolves.toStrictEqual( - transformBlock(mockData.gqlBlock.block) - ); - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "fragment TransactionInfo on SpentTransaction { blockHash, blockHeight, blockTimestamp, err, gasSpent, id, tx { blobHashes, callData { contractId, data, fnName }, gasLimit, gasPrice, id, isDeploy, memo, txType, json } } fragment BlockInfo on Block { header { hash, gasLimit, height, prevBlockHash, seed, stateHash, timestamp, version }, fees, gasSpent, reward, transactions {...TransactionInfo} } query($id: String!) { block(hash: $id) {...BlockInfo} }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""some-id"", - }, - "method": "POST", - } - `); - expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][1]).toMatchInlineSnapshot(` - { - "body": "query($height: Float!) { block(height: $height) { header { hash } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-height": "495869", - }, - "method": "POST", - } - `); - expect(getByHeightSpy).toHaveBeenCalledTimes(1); - expect(getByHeightSpy).toHaveBeenCalledWith( - mockData.gqlBlock.block.header.height + 1 - ); - - getByHeightSpy.mockRestore(); - }); - - it("should expose a method to retrieve a block hash by its height", async () => { - const expectedHash = mockData.gqlBlock.block.header.nextBlockHash; - - fetchSpy - .mockResolvedValueOnce( - makeOKResponse({ - block: { - header: { - hash: expectedHash, - }, - }, - }) - ) - .mockResolvedValueOnce( - makeOKResponse({ - block: null, - }) - ); - - await expect(duskAPI.getBlockHashByHeight(11)).resolves.toBe(expectedHash); - await expect(duskAPI.getBlockHashByHeight(11)).resolves.toBe(""); - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "query($height: Float!) { block(height: $height) { header { hash } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-height": "11", - }, - "method": "POST", - } - `); - // expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][1]).toMatchInlineSnapshot(` - { - "body": "query($height: Float!) { block(height: $height) { header { hash } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-height": "11", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve the details of a single block", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.gqlBlockDetails)); - - await expect(duskAPI.getBlockDetails(fakeID)).resolves.toBe( - mockData.gqlBlockDetails.block.header.json - ); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "query($id: String!) { block(hash: $id) { header { json } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""some-id"", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve the list of blocks", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.gqlBlocks)); - - await expect(duskAPI.getBlocks(100)).resolves.toStrictEqual( - mockData.gqlBlocks.blocks.map(transformBlock) - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "fragment TransactionInfo on SpentTransaction { blockHash, blockHeight, blockTimestamp, err, gasSpent, id, tx { blobHashes, callData { contractId, data, fnName }, gasLimit, gasPrice, id, isDeploy, memo, txType, json } } fragment BlockInfo on Block { header { hash, gasLimit, height, prevBlockHash, seed, stateHash, timestamp, version }, fees, gasSpent, reward, transactions {...TransactionInfo} } query($amount: Int!) { blocks(last: $amount) {...BlockInfo} }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-amount": "100", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve the latest chain info", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.gqlLatestChainInfo)); - - await expect(duskAPI.getLatestChainInfo(15)).resolves.toStrictEqual({ - blocks: mockData.gqlLatestChainInfo.blocks.map(transformBlock), - transactions: - mockData.gqlLatestChainInfo.transactions.map(transformTransaction), - }); - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "fragment TransactionInfo on SpentTransaction { blockHash, blockHeight, blockTimestamp, err, gasSpent, id, tx { blobHashes, callData { contractId, data, fnName }, gasLimit, gasPrice, id, isDeploy, memo, txType, json } } fragment BlockInfo on Block { header { hash, gasLimit, height, prevBlockHash, seed, stateHash, timestamp, version }, fees, gasSpent, reward, transactions {...TransactionInfo} } query($amount: Int!) { blocks(last: $amount) {...BlockInfo}, transactions(last: $amount) {...TransactionInfo} }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-amount": "15", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve the market data", async () => { - const mockSupply = "456000000"; - - fetchSpy - .mockResolvedValueOnce(makeOKResponse(mockData.apiMarketData)) - .mockResolvedValueOnce(new Response(mockSupply, { status: 200 })); - - /** @type {Record} */ - const expectedMarketCap = {}; - Object.keys(mockData.apiMarketData.market_data.current_price).forEach( - (currency) => { - expectedMarketCap[currency] = - parseFloat(mockSupply) * - /** @type {Record} */ ( - mockData.apiMarketData.market_data.current_price - )[currency]; - } - ); - - await expect(duskAPI.getMarketData()).resolves.toStrictEqual({ - currentPrice: mockData.apiMarketData.market_data.current_price, - marketCap: expectedMarketCap, - }); - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy).toHaveBeenNthCalledWith( - 1, - new URL( - "https://api.coingecko.com/api/v3/coins/dusk-network?community_data=false&developer_data=false&localization=false&market_data=true&sparkline=false&tickers=false" - ), - apiGetOptions - ); - expect(fetchSpy).toHaveBeenNthCalledWith(2, "https://supply.dusk.network/"); - }); - - it("should fallback to CoinGecko market cap when supply endpoint fails", async () => { - fetchSpy - .mockResolvedValueOnce(makeOKResponse(mockData.apiMarketData)) - .mockRejectedValueOnce(new Error("Supply endpoint unavailable")); - - await expect(duskAPI.getMarketData()).resolves.toStrictEqual({ - currentPrice: mockData.apiMarketData.market_data.current_price, - marketCap: mockData.apiMarketData.market_data.market_cap, - }); - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy).toHaveBeenNthCalledWith( - 1, - new URL( - "https://api.coingecko.com/api/v3/coins/dusk-network?community_data=false&developer_data=false&localization=false&market_data=true&sparkline=false&tickers=false" - ), - apiGetOptions - ); - expect(fetchSpy).toHaveBeenNthCalledWith(2, "https://supply.dusk.network/"); - }); - - it("should expose a method to retrieve the node locations", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.apiNodeLocations)); - - await expect(duskAPI.getNodeLocations()).resolves.toStrictEqual( - addCountAndUnique(mockData.apiNodeLocations) - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - }); - - it("should expose a method to retrieve the host provisioners", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.hostProvisioners)); - - await expect(duskAPI.getProvisioners()).resolves.toStrictEqual( - mockData.hostProvisioners - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - }); - - it("should expose a method to retrieve the node info", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.apiNodeInfo)); - - await expect(duskAPI.getNodeInfo()).resolves.toStrictEqual( - mockData.apiNodeInfo - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - }); - - it("should expose a method to retrieve the statistics", async () => { - const lastBlockHeight = 1498332; - const txCount = { - public: 13742, - shielded: 2621, - total: 16363, - }; - const expectedStats = { - ...calculateStats(mockData.hostProvisioners, lastBlockHeight), - txCount, - }; - - fetchSpy - .mockResolvedValueOnce(makeOKResponse(mockData.hostProvisioners)) - .mockResolvedValueOnce( - makeOKResponse({ block: { header: { height: lastBlockHeight } } }) - ) - .mockResolvedValueOnce(makeOKResponse(txCount)); - - await expect(duskAPI.getStats()).resolves.toStrictEqual(expectedStats); - - expect(fetchSpy).toHaveBeenCalledTimes(3); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual( - new URL( - `${import.meta.env.VITE_RUSK_PATH || ""}/on/node/provisioners`, - node.origin - ) - ); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - }, - "method": "POST", - } - `); - expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][1]).toMatchInlineSnapshot(` - { - "body": "query { block(height: -1) { header { height } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - }, - "method": "POST", - } - `); - expect(fetchSpy.mock.calls[2][0]).toStrictEqual( - new URL( - `${import.meta.env.VITE_RUSK_PATH || ""}/on/stats/tx_count`, - node.origin - ) - ); - expect(fetchSpy.mock.calls[2][1]).toMatchInlineSnapshot(` - { - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve a single transaction", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.gqlTransaction)); - - await expect(duskAPI.getTransaction(fakeID)).resolves.toStrictEqual( - transformTransaction(mockData.gqlTransaction.tx) - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "fragment TransactionInfo on SpentTransaction { blockHash, blockHeight, blockTimestamp, err, gasSpent, id, tx { blobHashes, callData { contractId, data, fnName }, gasLimit, gasPrice, id, isDeploy, memo, txType, json } } query($id: String!) { tx(hash: $id) { ...TransactionInfo tx { json } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""some-id"", - }, - "method": "POST", - } - `); - }); - - it("should expose a method to retrieve the list of transactions", async () => { - fetchSpy.mockResolvedValueOnce(makeOKResponse(mockData.gqlTransactions)); - - await expect(duskAPI.getTransactions(100)).resolves.toStrictEqual( - mockData.gqlTransactions.transactions.map(transformTransaction) - ); - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "fragment TransactionInfo on SpentTransaction { blockHash, blockHeight, blockTimestamp, err, gasSpent, id, tx { blobHashes, callData { contractId, data, fnName }, gasLimit, gasPrice, id, isDeploy, memo, txType, json } } query($amount: Int!) { transactions(last: $amount) {...TransactionInfo} }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-amount": "100", - }, - "method": "POST", - } - `); - }); - - it("should return a rejected promise, with the original Response in the error's `cause` property, for a 4xx error", async () => { - const apiMethods = Object.keys(duskAPI).filter( - (k) => typeof k === "function" - ); - - for (const apiMethod of apiMethods) { - const notFoundResponse = new Response("", { status: 404 }); - - fetchSpy.mockResolvedValueOnce(notFoundResponse); - - await expect(() => - // @ts-expect-error we don't care of the parameters we pass as the call to fetch is mocked - duskAPI[apiMethod]("foo/bar", "some-id") - ).rejects.toThrow( - expect.objectContaining({ - cause: notFoundResponse, - }) - ); - } - }); - - it("should be able to make the correct request whether the endpoint in env vars ends with a trailing slash or not", () => { - const expectedURL = new URL( - "https://nodes.dusk.network/on/network/peers_location" - ); - - fetchSpy - .mockResolvedValueOnce(makeOKResponse(mockData.apiNodeLocations)) - .mockResolvedValueOnce(makeOKResponse(mockData.apiNodeLocations)); - - duskAPI.getNodeLocations(); - duskAPI.getNodeLocations(); - - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy).toHaveBeenNthCalledWith(1, expectedURL, { - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - }, - method: "POST", - }); - expect(fetchSpy).toHaveBeenNthCalledWith(2, expectedURL, { - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - }, - method: "POST", - }); - - vi.unstubAllEnvs(); - }); - - it("should expose a method to search for blocks and transactions", async () => { - const fakeHash1 = Array(64).fill(1).join(""); - const fakeHash2 = Array(64).fill(2).join(""); - const hashResult = { - block: { - header: { - hash: fakeHash1, - }, - }, - }; - const heightResult = { - block: { - header: { - hash: fakeHash2, - }, - }, - }; - - fetchSpy - .mockResolvedValueOnce(makeOKResponse(hashResult)) - .mockResolvedValueOnce(makeOKResponse(heightResult)); - - await expect(duskAPI.search(fakeHash1)).resolves.toStrictEqual( - transformSearchResult(hashResult) - ); - - await expect(duskAPI.search(fakeHash2)).resolves.toStrictEqual( - transformSearchResult(heightResult) - ); - - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "query($id: String!) { block(hash: $id) { header { hash } }, tx(hash: $id) { id } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""1111111111111111111111111111111111111111111111111111111111111111"", - }, - "method": "POST", - } - `); - expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][1]).toMatchInlineSnapshot(` - { - "body": "query($id: String!) { block(hash: $id) { header { hash } }, tx(hash: $id) { id } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""2222222222222222222222222222222222222222222222222222222222222222"", - }, - "method": "POST", - } - `); - }); - - it("should not perform the height search if the query string doesn't contain only numbers", async () => { - const entryHash = - "fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63"; - - fetchSpy.mockResolvedValueOnce( - makeOKResponse(mockData.gqlSearchPossibleResults[0]) - ); - - await expect(duskAPI.search(entryHash)).resolves.toStrictEqual( - transformSearchResult(mockData.gqlSearchPossibleResults[0]) - ); - - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "query($id: String!) { block(hash: $id) { header { hash } }, tx(hash: $id) { id } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-id": ""fda46b4e06cc78542db9c780adbaee83a27fdf917de653e8ac34294cf924dd63"", - }, - "method": "POST", - } - `); - }); - - it("should not perform the hash search if the query string isn't of 64 characters", async () => { - const entryHeight = "123456"; - - fetchSpy.mockResolvedValueOnce( - makeOKResponse(mockData.gqlSearchPossibleResults[0]) - ); - - await expect(duskAPI.search(entryHeight)).resolves.toStrictEqual( - transformSearchResult(mockData.gqlSearchPossibleResults[0]) - ); - - expect(fetchSpy).toHaveBeenCalledTimes(1); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[0][1]).toMatchInlineSnapshot(` - { - "body": "query($height: Float!) { block(height: $height) { header { hash } } }", - "headers": { - "Accept": "application/json", - "Accept-Charset": "utf-8", - "Connection": "Keep-Alive", - "Content-Type": "application/json", - "Rusk-gqlvar-height": "123456", - }, - "method": "POST", - } - `); - }); - - it("should not perform any search at all if the query string doesn't satisfy criteria for both hash and height", async () => { - await expect(duskAPI.search("abc")).resolves.toStrictEqual(null); - - expect(fetchSpy).not.toHaveBeenCalled(); - }); - - it("should return a mempool message if the transaction is in the mempool", async () => { - fetchSpy - .mockResolvedValueOnce(makeOKResponse({ tx: null })) - .mockResolvedValueOnce(makeOKResponse({ mempoolTx: true })); - - await expect(duskAPI.getTransaction(fakeID)).resolves.toBe( - "This transaction is currently in the mempool and has not yet been confirmed. The transaction details will be displayed after confirmation." - ); - - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - }); - - it("should throw an error if the transaction is not found", async () => { - fetchSpy - .mockResolvedValueOnce(makeOKResponse({ tx: null })) - .mockResolvedValueOnce(makeOKResponse({ mempoolTx: null })); - - await expect(duskAPI.getTransaction(fakeID)).rejects.toThrow( - "Transaction not found" - ); - - expect(fetchSpy).toHaveBeenCalledTimes(2); - expect(fetchSpy.mock.calls[0][0]).toStrictEqual(gqlExpectedURL); - expect(fetchSpy.mock.calls[1][0]).toStrictEqual(gqlExpectedURL); - }); -}); diff --git a/explorer/src/lib/services/duskAPI.js b/explorer/src/lib/services/duskAPI.js deleted file mode 100644 index 199ec53c83..0000000000 --- a/explorer/src/lib/services/duskAPI.js +++ /dev/null @@ -1,401 +0,0 @@ -import { - fromPairs, - getKey, - getPath, - isUndefined, - mapWith, - ownPairs, - pipe, - setPathIn, - unless, -} from "lamb"; - -import { failureToRejection } from "$lib/dusk/http"; -import { makeNodeUrl } from "$lib/url"; - -import { - addCountAndUnique, - calculateStats, - transformBlock, - transformSearchResult, - transformTransaction, -} from "$lib/chain-info"; - -import { - getBlockDetailsQueryInfo, - getBlockHashQueryInfo, - getBlockQueryInfo, - getBlocksQueryInfo, - getFullMoonlightAccountHistoryQuery, - getLatestChainQueryInfo, - getMempoolTx, - getTransactionQueryInfo, - getTransactionsQueryInfo, - searchByHashQueryInfo, - transactionFragment, -} from "./gql-queries"; -import * as base58 from "../utils/encoders/base58"; - -/** @type {(blocks: GQLBlock[]) => Block[]} */ -const transformBlocks = mapWith(transformBlock); - -/** @type {(transactions: GQLTransaction[]) => Transaction[]} */ -const transformTransactions = mapWith(transformTransaction); - -/** - * Adds the `Rusk-gqlvar-` prefix to all - * keys of the given object and calls `JSON.stringify` - * on their values. * - * Returns `undefined` if the input is `undefined`. - * - * The `JSON.stringify` call is because the GraphQL - * server will parse a variable containing only digits - * as a number otherwise, when the expected type is a string. - */ -const toHeadersVariables = unless( - isUndefined, - pipe([ - ownPairs, - mapWith(([k, v]) => [`Rusk-gqlvar-${k}`, JSON.stringify(v)]), - fromPairs, - ]) -); - -/** - * @param {{ query: string, variables?: Record }} queryInfo - */ -const gqlGet = (queryInfo) => - fetch(makeNodeUrl("/on/graphql/query"), { - body: queryInfo.query.replace(/\s+/g, " ").trim(), - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - "Content-Type": "application/json", - ...toHeadersVariables(queryInfo.variables), - }, - method: "POST", - }) - .then(failureToRejection) - .then((res) => res.json()); - -/** - * @param {string} endpoint - * @returns {Promise} - */ -const nodePost = (endpoint) => - fetch(makeNodeUrl(endpoint), { - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - }, - method: "POST", - }) - .then(failureToRejection) - .then((res) => res.json()); - -/** @type {() => Promise} */ -const getLastHeight = () => - gqlGet({ - query: "query { block(height: -1) { header { height } } }", - }).then(getPath("block.header.height")); - -const duskAPI = { - /** - * @param {string} address - * @returns {Promise} - */ - getAccountStatus(address) { - return nodePost(`/on/account:${address}/status`); - }, - - /** - * @param {string} id - * @returns {Promise} - */ - getBlock(id) { - return gqlGet(getBlockQueryInfo(id)) - .then(async ({ block }) => - setPathIn( - block, - "header.nextBlockHash", - await duskAPI.getBlockHashByHeight(block.header.height + 1) - ) - ) - .then(transformBlock); - }, - - /** - * @param {string} id - * @returns {Promise} - */ - getBlockDetails(id) { - return gqlGet(getBlockDetailsQueryInfo(id)).then( - getPath("block.header.json") - ); - }, - - /** - * @param {number} height - * @returns {Promise} - */ - getBlockHashByHeight(height) { - return gqlGet(getBlockHashQueryInfo(height)).then(({ block }) => - block ? block.header.hash : "" - ); - }, - - /** - * @param {number} amount - * @returns {Promise} - */ - getBlocks(amount) { - return gqlGet(getBlocksQueryInfo(amount)) - .then(getKey("blocks")) - .then(transformBlocks); - }, - - /** - * @param {number} amount - * @returns {Promise} - */ - getLatestChainInfo(amount) { - return gqlGet(getLatestChainQueryInfo(amount)).then( - ({ blocks, transactions }) => ({ - blocks: transformBlocks(blocks), - transactions: transformTransactions(transactions), - }) - ); - }, - - /** @returns {Promise} */ - async getMarketData() { - const COINGECKO_MARKET_URL = new URL( - "https://api.coingecko.com/api/v3/coins/dusk-network" + - "?community_data=false" + - "&developer_data=false" + - "&localization=false" + - "&market_data=true" + - "&sparkline=false" + - "&tickers=false" - ); - - try { - // Fetch price data and circulating supply - const [coinGeckoData, circulatingSupply] = await Promise.all([ - fetch(COINGECKO_MARKET_URL, { - headers: { - Accept: "application/json", - "Accept-Charset": "utf-8", - Connection: "Keep-Alive", - }, - method: "GET", - }) - .then(failureToRejection) - .then((res) => res.json()) - .then(getKey("market_data")), - fetch("https://supply.dusk.network/") - .then(failureToRejection) - .then((res) => res.text()) - .then((supply) => parseFloat(supply)) - .catch(() => null), - ]); - - const currentPrice = coinGeckoData.current_price; - - // Calculate market cap using circulating supply if available, fallback to CoinGecko - /** @type {Record} */ - let marketCap; - if ( - circulatingSupply !== null && - !isNaN(circulatingSupply) && - currentPrice?.usd - ) { - marketCap = { - usd: circulatingSupply * currentPrice.usd, - }; - // Add other currencies - Object.keys(currentPrice).forEach((currency) => { - if (currency !== "usd" && currentPrice[currency]) { - marketCap[currency] = circulatingSupply * currentPrice[currency]; - } - }); - } else { - // Fallback to CoinGecko's market cap - marketCap = coinGeckoData.market_cap; - } - - return { - currentPrice, - marketCap, - }; - } catch (/** @type {any} */ error) { - throw new Error(`Failed to fetch market data: ${error.message}`); - } - }, - - /** - * @param {string} address - * @returns {Promise} sortedTransactions - */ - async getMoonlightAccountTransactions(address) { - // Gets contract interactions for the given address - const moonlightData = await gqlGet( - getFullMoonlightAccountHistoryQuery(address) - ); - if (!moonlightData.fullMoonlightHistory) { - return []; - } - // Extracts the transaction IDs from the contract interactions - const transactionIds = moonlightData.fullMoonlightHistory.json.map( - (/** @type {{ origin: any; }} */ block) => block.origin - ); - if (transactionIds.length === 0) return []; - - // Build a single GraphQL query with aliases for all txs - /** - * @param {string[]} ids - * @returns {string} - */ - const buildBatchTransactionQuery = (ids) => { - const fragment = transactionFragment; - const queries = ids.map( - (id, idx) => `tx${idx}: tx(hash: "${id}") { ...TransactionInfo }` - ); - return `query {\n${queries.join("\n")}\n}\n${fragment}`; - }; - - // Batch fetch all transactions in a single query - const batchQuery = buildBatchTransactionQuery(transactionIds); - const response = await gqlGet({ query: batchQuery }); - // response is an object: { tx0: {...}, tx1: {...}, ... } - const txs = Object.values(response).filter(Boolean); - const results = txs.map(transformTransaction); - - // Sort transactions by date in descending order (newest first) - const sortedTransactions = results.sort((a, b) => { - const dateA = a.date instanceof Date ? a.date.getTime() : 0; - const dateB = b.date instanceof Date ? b.date.getTime() : 0; - return dateB - dateA; - }); - - return sortedTransactions; - }, - - /** - * @returns {Promise} - */ - getNodeInfo() { - return nodePost("/on/node/info"); - }, - - /** - * @returns {Promise<{ lat: number, lon: number}[]>} - */ - getNodeLocations() { - return nodePost("/on/network/peers_location").then((data) => - addCountAndUnique(data) - ); - }, - - /** @returns {Promise} */ - getProvisioners() { - return nodePost("/on/node/provisioners"); - }, - - /** - * @returns {Promise} - */ - getStats() { - return Promise.all([ - duskAPI.getProvisioners(), - getLastHeight(), - duskAPI.getTxCount(), - ]).then(([provisioners, lastHeight, txCount]) => ({ - ...calculateStats(provisioners, lastHeight), - txCount, - })); - }, - - /** - * @param {string} id - * @returns {Promise} - */ - getTransaction(id) { - return gqlGet(getTransactionQueryInfo(id)) - .then(getKey("tx")) - .then((tx) => { - if (tx === null) { - return gqlGet(getMempoolTx(id)) - .then(getKey("mempoolTx")) - .then((mempoolTx) => { - if (mempoolTx) { - return "This transaction is currently in the mempool and has not yet been confirmed. The transaction details will be displayed after confirmation."; - } else { - throw new Error("Transaction not found"); - } - }); - } else { - return transformTransaction(tx); - } - }); - }, - - /** - * @param {number} amount - * @returns {Promise} - */ - getTransactions(amount) { - return gqlGet(getTransactionsQueryInfo(amount)) - .then(getKey("transactions")) - .then(transformTransactions); - }, - - /** - * @returns {Promise<{ public: number; shielded: number; total: number }>} - */ - getTxCount() { - return nodePost("/on/stats/tx_count"); - }, - - /** - * Search function that handles different query formats: - * 1. 64-character hexadecimal strings (likely transaction or block hashes) - * 2. Numeric strings (likely block heights) - * 3. Base58-encoded strings with a decoded length of 96 bytes (likely addresses) - * - * @param {string} query - The search query string - * @returns {Promise} - Promise resolving to transformed search result - */ - async search(query) { - let searchPromise; - - // Case 1: Handle 64-character hexadecimal strings (likely tx or block hashes) - if (query.length === 64) { - searchPromise = gqlGet(searchByHashQueryInfo(query)); - } - - // Case 2: Handle numeric strings (likely block heights) - else if (/^\d+$/.test(query)) { - searchPromise = gqlGet(getBlockHashQueryInfo(+query)); - } - - // Case 3: Handle potential base58-encoded addresses - else { - const bytes = base58.decode(query); - // If decoded length is 96 bytes, it's likely an address - if (bytes?.length === 96) { - searchPromise = Promise.resolve({ account: { id: query } }); - } else { - searchPromise = Promise.resolve(null); - } - } - - const entry = await searchPromise; - const result = entry ? transformSearchResult(entry) : null; - return result; - }, -}; - -export default duskAPI; diff --git a/explorer/src/lib/services/gql-queries.js b/explorer/src/lib/services/gql-queries.js deleted file mode 100644 index 0f97b1cf95..0000000000 --- a/explorer/src/lib/services/gql-queries.js +++ /dev/null @@ -1,143 +0,0 @@ -export const transactionFragment = ` -fragment TransactionInfo on SpentTransaction { - blockHash, - blockHeight, - blockTimestamp, - err, - gasSpent, - id, - tx { - ${import.meta.env.VITE_FEATURE_BLOB_HASHES === "true" ? "blobHashes," : ""} - callData { - contractId, - data, - fnName - }, - gasLimit, - gasPrice, - id, - isDeploy, - memo, - txType, - json - } -} -`; - -const blockFragment = ` -${transactionFragment} -fragment BlockInfo on Block { - header { - hash, - gasLimit, - height, - prevBlockHash, - seed, - stateHash, - timestamp, - version - }, - fees, - gasSpent, - reward, - transactions {...TransactionInfo} -} -`; - -/** @param {string} address */ -export const getFullMoonlightAccountHistoryQuery = (address) => ({ - query: ` - query GetFullMoonlightHistory($address: String!) { - fullMoonlightHistory(address: $address) { - json - } - } - `, - variables: { address }, -}); - -/** @param {number} height */ -export const getBlockHashQueryInfo = (height) => ({ - query: ` - query($height: Float!) { block(height: $height) { header { hash } } } - `, - variables: { height }, -}); - -/** @param {string} id */ -export const getBlockQueryInfo = (id) => ({ - query: ` - ${blockFragment} - query($id: String!) { block(hash: $id) {...BlockInfo} } - `, - variables: { id }, -}); - -/** @param {string} id */ -export const getBlockDetailsQueryInfo = (id) => ({ - query: "query($id: String!) { block(hash: $id) { header { json } } }", - variables: { id }, -}); - -/** @param {number} amount */ -export const getBlocksQueryInfo = (amount) => ({ - query: ` - ${blockFragment} - query($amount: Int!) { blocks(last: $amount) {...BlockInfo} } - `, - variables: { amount }, -}); - -/** @param {number} amount */ -export const getLatestChainQueryInfo = (amount) => ({ - query: ` - ${blockFragment} - query($amount: Int!) { - blocks(last: $amount) {...BlockInfo}, - transactions(last: $amount) {...TransactionInfo} - } - `, - variables: { amount }, -}); - -/** @param {string} id */ -export const getMempoolTx = (id) => ({ - query: "query($id: String!) { mempoolTx(hash: $id) { isDeploy } }", - variables: { id }, -}); - -/** @param {number} amount */ -export const getTransactionsQueryInfo = (amount) => ({ - query: ` - ${transactionFragment} - query($amount: Int!) { transactions(last: $amount) {...TransactionInfo} } - `, - variables: { amount }, -}); - -/** @param {string} id */ -export const getTransactionQueryInfo = (id) => ({ - query: ` - ${transactionFragment} - query($id: String!) { - tx(hash: $id) { - ...TransactionInfo - tx { - json - } - } - } - `, - variables: { id }, -}); - -/** @param {string} id */ -export const searchByHashQueryInfo = (id) => ({ - query: ` - query($id: String!) { - block(hash: $id) { header { hash } }, - tx(hash: $id) { id } - } - `, - variables: { id }, -}); diff --git a/explorer/src/lib/services/index.js b/explorer/src/lib/services/index.js deleted file mode 100644 index cdb00d2b84..0000000000 --- a/explorer/src/lib/services/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as duskAPI } from "./duskAPI"; diff --git a/explorer/src/lib/stats/stats.d.ts b/explorer/src/lib/stats/stats.d.ts deleted file mode 100644 index d535b04bcf..0000000000 --- a/explorer/src/lib/stats/stats.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -type Stats = { - activeProvisioners: number; - activeStake: number; - lastBlock: number; - waitingProvisioners: number; - waitingStake: number; - txCount?: { - public: number; - shielded: number; - total: number; - }; -}; diff --git a/explorer/src/lib/stores/__tests__/appStore.spec.js b/explorer/src/lib/stores/__tests__/appStore.spec.js deleted file mode 100644 index 5d85311843..0000000000 --- a/explorer/src/lib/stores/__tests__/appStore.spec.js +++ /dev/null @@ -1,158 +0,0 @@ -import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; -import { get } from "svelte/store"; -import { apiNodeInfo } from "$lib/mock-data"; - -import { changeMediaQueryMatches } from "$lib/dusk/test-helpers"; - -describe("appStore", () => { - const originalTouchStart = window.ontouchstart; - const originalMaxTouchPoints = navigator.maxTouchPoints; - - delete window.ontouchstart; - - Object.defineProperty(navigator, "maxTouchPoints", { - value: 0, - writable: true, - }); - - beforeEach(() => { - vi.resetModules(); - }); - - afterAll(() => { - window.ontouchstart = originalTouchStart; - - Object.defineProperty(navigator, "maxTouchPoints", { - value: originalMaxTouchPoints, - writable: false, - }); - }); - - it("should be a readable store holding the information needed throughout the whole application", async () => { - const { appStore } = await import(".."); - const { env } = import.meta; - - expect(appStore).toHaveProperty("subscribe", expect.any(Function)); - expect(appStore).not.toHaveProperty("set"); - expect(get(appStore)).toStrictEqual({ - blocksListEntries: Number(env.VITE_BLOCKS_LIST_ENTRIES), - chainInfoEntries: Number(env.VITE_CHAIN_INFO_ENTRIES), - darkMode: false, - fetchInterval: Number(env.VITE_REFETCH_INTERVAL), - hasTouchSupport: false, - isSmallScreen: false, - marketDataFetchInterval: Number(env.VITE_MARKET_DATA_REFETCH_INTERVAL), - nodeInfo: { - /* eslint-disable camelcase */ - bootstrapping_nodes: [], - chain_id: undefined, - kadcast_address: "", - version: "", - version_build: "", - /* eslint-enable camelcase */ - }, - provisionersFetchInterval: Number(env.VITE_PROVISIONERS_REFETCH_INTERVAL), - statsFetchInterval: Number(env.VITE_STATS_REFETCH_INTERVAL), - transactionsListEntries: Number(env.VITE_TRANSACTIONS_LIST_ENTRIES), - }); - }); - - it("should set the `hasTouchSupport` property to true if the `ontouchstart` property exists on `window`", async () => { - window.ontouchstart = originalTouchStart; - - const { appStore } = await import(".."); - - expect(get(appStore).hasTouchSupport).toBe(true); - - delete window.ontouchstart; - }); - - it("should set the `hasTouchSupport` property to true if the `navigator.maxTouchPoints` property is greater than zero", async () => { - // @ts-ignore - navigator.maxTouchPoints = 1; - - const { appStore } = await import(".."); - - expect(get(appStore).hasTouchSupport).toBe(true); - - // @ts-ignore - navigator.maxTouchPoints = 0; - }); - - it("should use default values for the fetch intervals if the env vars are missing", async () => { - vi.stubEnv("VITE_REFETCH_INTERVAL", ""); - vi.stubEnv("VITE_MARKET_DATA_REFETCH_INTERVAL", ""); - vi.stubEnv("VITE_PROVISIONERS_REFETCH_INTERVAL", ""); - vi.stubEnv("VITE_STATS_REFETCH_INTERVAL", ""); - - const { appStore } = await import(".."); - const { - fetchInterval, - marketDataFetchInterval, - provisionersFetchInterval, - statsFetchInterval, - } = get(appStore); - - expect(fetchInterval).toBe(10000); - expect(marketDataFetchInterval).toBe(120000); - expect(provisionersFetchInterval).toBe(30000); - expect(statsFetchInterval).toBe(10000); - - vi.unstubAllEnvs(); - }); - - it("should expose a service method to set the dark mode theme", async () => { - const { appStore } = await import(".."); - - appStore.setTheme(true); - - expect(get(appStore).darkMode).toBe(true); - }); - - it("should set the `isSmallScreen` property to `false` when the related media query doesn't match", async () => { - const { appStore } = await import(".."); - - expect(get(appStore).isSmallScreen).toBe(false); - }); - - it("should set the `isSmallScreen` property to `true` when the related media query matches", async () => { - const mqMatchesSpy = vi - .spyOn(MediaQueryList.prototype, "matches", "get") - .mockReturnValue(true); - - const { appStore } = await import(".."); - - expect(get(appStore).isSmallScreen).toBe(true); - - mqMatchesSpy.mockRestore(); - }); - - it("should update the `isSmallScreen` property when the media query match changes", async () => { - const { appStore } = await import(".."); - - expect(get(appStore).isSmallScreen).toBe(false); - - changeMediaQueryMatches("(max-width: 1024px)", true); - - expect(get(appStore).isSmallScreen).toBe(true); - }); - - it("should expose a service method to set the node info", async () => { - const { appStore } = await import(".."); - - const initialNodeInfo = { - /* eslint-disable camelcase */ - bootstrapping_nodes: [], - chain_id: undefined, - kadcast_address: "", - version: "", - version_build: "", - /* eslint-enable camelcase */ - }; - - expect(get(appStore).nodeInfo).toStrictEqual(initialNodeInfo); - - appStore.setNodeInfo(apiNodeInfo); - expect(get(appStore).nodeInfo).toStrictEqual(apiNodeInfo); - }); -}); diff --git a/explorer/src/lib/stores/__tests__/marketDataStore.spec.js b/explorer/src/lib/stores/__tests__/marketDataStore.spec.js deleted file mode 100644 index 8ae391a580..0000000000 --- a/explorer/src/lib/stores/__tests__/marketDataStore.spec.js +++ /dev/null @@ -1,418 +0,0 @@ -import { - afterAll, - afterEach, - beforeEach, - describe, - expect, - it, - vi, -} from "vitest"; -import { get } from "svelte/store"; - -import { rejectAfter, resolveAfter } from "$lib/dusk/promise"; -import { duskAPI } from "$lib/services"; - -/** - * We don't import from "..", because we don't want - * marketDataStore to be imported and start running - */ -import appStore from "../appStore"; - -const { fakeMarketDataA, settleTime } = vi.hoisted(() => ({ - fakeMarketDataA: { data: "A" }, - settleTime: 1000, -})); - -vi.mock("svelte/store", async (importOriginal) => { - /** @type {import("svelte/store")} */ - const original = await importOriginal(); - - return { - ...original, - get: vi.fn((store) => original.get(store)), - }; -}); - -vi.mock("$lib/services", async (importOriginal) => ({ - .../** @type {import("$lib/services")} */ (await importOriginal()), - duskAPI: { - getMarketData: vi.fn(async () => resolveAfter(settleTime, fakeMarketDataA)), - }, -})); - -describe("marketDataStore", async () => { - const storeKey = "market-data"; - const { marketDataFetchInterval } = get(appStore); - const fakeMarketDataB = { data: "B" }; - - /** @type {MarketDataStore} */ - let marketDataStore; - - vi.useFakeTimers(); - - beforeEach(async () => { - vi.resetModules(); - vi.clearAllTimers(); - vi.mocked(duskAPI.getMarketData).mockClear(); - - localStorage.clear(); - - marketDataStore = (await import("../marketDataStore")).default; - }); - - afterAll(() => { - vi.doUnmock("$lib/services"); - vi.doUnmock("svelte/store"); - vi.useRealTimers(); - }); - - it("should start polling for market data and update the `lastUpdate` property when data changes", async () => { - /** - * This is the result for the second call as the first one - * starts with the import and isn't resolved yet - */ - vi.mocked(duskAPI.getMarketData).mockImplementationOnce(() => - resolveAfter(settleTime, fakeMarketDataB) - ); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(1); - expect(get(marketDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - lastUpdate: null, - }); - - await vi.advanceTimersByTimeAsync(settleTime); - - const storeA = { - data: fakeMarketDataA, - error: null, - isLoading: false, - lastUpdate: new Date(), - }; - - expect(get(marketDataStore)).toStrictEqual(storeA); - - await vi.advanceTimersByTimeAsync(marketDataFetchInterval); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(2); - expect(get(marketDataStore)).toStrictEqual({ - ...storeA, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(settleTime); - - expect(get(marketDataStore)).toStrictEqual({ - data: fakeMarketDataB, - error: null, - isLoading: false, - lastUpdate: new Date(), - }); - - await vi.advanceTimersByTimeAsync(marketDataFetchInterval + settleTime); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(3); - expect(get(marketDataStore)).toStrictEqual({ - ...storeA, - lastUpdate: new Date(), - }); - }); - - it("should not reset its data and stop the polling after an error, without resetting it as well", async () => { - const error = new Error("Some error message"); - - /** - * These are the results for the second and third call - * as the first one starts with the import and isn't resolved yet - */ - vi.mocked(duskAPI.getMarketData) - .mockImplementationOnce(() => rejectAfter(settleTime, error)) - .mockImplementationOnce(() => resolveAfter(settleTime, fakeMarketDataB)); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(1); - - await vi.advanceTimersByTimeAsync(settleTime); - - const storeA = { - data: fakeMarketDataA, - error: null, - isLoading: false, - lastUpdate: new Date(), - }; - - expect(get(marketDataStore)).toStrictEqual(storeA); - - await vi.advanceTimersByTimeAsync(marketDataFetchInterval); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(2); - expect(get(marketDataStore)).toStrictEqual({ - ...storeA, - isLoading: true, - }); - - await vi.advanceTimersByTimeAsync(settleTime); - - expect(get(marketDataStore)).toStrictEqual({ - ...storeA, - error, - isLoading: false, - }); - - await vi.advanceTimersByTimeAsync(marketDataFetchInterval * 10); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(2); - }); - - describe("Stale data checks", () => { - const startingStore = { - data: null, - error: null, - isLoading: false, - lastUpdate: null, - }; - const storeWithData = { - ...startingStore, - data: fakeMarketDataA, - lastUpdate: new Date(), - }; - - it("should not consider data as stale if there's no data", () => { - vi.mocked(get).mockReturnValueOnce(startingStore); - - expect(marketDataStore.isDataStale()).toBe(false); - }); - - it("should not consider data as stale if the store is loading and there is no error, even if the last update exceeds the fetch interval", () => { - vi.mocked(get) - .mockReturnValueOnce({ ...startingStore, isLoading: true }) - .mockReturnValueOnce({ ...storeWithData, isLoading: true }) - .mockReturnValueOnce({ - ...storeWithData, - isLoading: true, - lastUpdate: new Date(Date.now() - marketDataFetchInterval - 1), - }); - - expect(marketDataStore.isDataStale()).toBe(false); - expect(marketDataStore.isDataStale()).toBe(false); - expect(marketDataStore.isDataStale()).toBe(false); - }); - - it("should consider data as stale if there's an error and data, even if the store is loading", () => { - const storeWithError = { - ...storeWithData, - error: new Error("some error"), - }; - - vi.mocked(get) - .mockReturnValueOnce(storeWithError) - .mockReturnValueOnce({ ...storeWithError, isLoading: true }) - .mockReturnValueOnce({ ...storeWithError, lastUpdate: null }) - .mockReturnValueOnce({ ...storeWithError, error: null }); - - expect(marketDataStore.isDataStale()).toBe(true); - expect(marketDataStore.isDataStale()).toBe(true); - expect(marketDataStore.isDataStale()).toBe(false); - expect(marketDataStore.isDataStale()).toBe(false); - }); - - it("should consider data as stale if the last update exceeds the fetch interval", () => { - vi.mocked(get) - .mockReturnValueOnce({ - ...storeWithData, - lastUpdate: new Date(Date.now() - marketDataFetchInterval - 1), - }) - .mockReturnValueOnce({ - ...storeWithData, - lastUpdate: new Date(Date.now() - marketDataFetchInterval), - }); - - expect(marketDataStore.isDataStale()).toBe(true); - expect(marketDataStore.isDataStale()).toBe(false); - }); - }); - - describe("Handling local storage", () => { - const consoleErrorSpy = vi.spyOn(console, "error"); - - beforeEach(() => { - vi.resetModules(); - vi.clearAllTimers(); - vi.mocked(duskAPI.getMarketData).mockClear(); - }); - - afterEach(() => { - consoleErrorSpy.mockReset(); - }); - - afterAll(() => { - consoleErrorSpy.mockRestore(); - }); - - it("should use data in local storage to initialize the store if present", async () => { - const storedData = { - data: "C", - lastUpdate: new Date(Date.now()), - }; - - localStorage.setItem(storeKey, JSON.stringify(storedData)); - - marketDataStore = (await import("../marketDataStore")).default; - - expect(get(marketDataStore)).toStrictEqual({ - error: null, - isLoading: false, - ...storedData, - }); - }); - - it("should ignore errors while retrieving local storage data and initialize the store as usual, after logging them in the console", async () => { - const FakeMarketDataInfo = () => {}; - - FakeMarketDataInfo.parse = () => { - throw new Error("some error"); - }; - - vi.doMock("$lib/market-data", async (importOriginal) => ({ - .../** @type {typeof import("$lib/market-data")} */ ( - await importOriginal() - ), - MarketDataInfo: FakeMarketDataInfo, - })); - localStorage.setItem(storeKey, "{}"); - - // we don't want to see our fake error in the console - consoleErrorSpy.mockImplementationOnce(() => {}); - - marketDataStore = (await import("../marketDataStore")).default; - - expect(consoleErrorSpy).toHaveBeenCalledTimes(1); - expect(get(marketDataStore)).toStrictEqual({ - data: null, - error: null, - isLoading: true, - lastUpdate: null, - }); - - vi.doUnmock("$lib/market-data"); - }); - - it("should start the polling as usual if there's data stored, but it's stale", async () => { - localStorage.setItem( - storeKey, - JSON.stringify({ - data: "D", - lastUpdate: new Date(Date.now() - marketDataFetchInterval - 1), - }) - ); - - marketDataStore = (await import("../marketDataStore")).default; - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(1); - - await vi.advanceTimersByTimeAsync(settleTime + marketDataFetchInterval); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(2); - }); - - it("should delay the polling if there's data stored and it's not stale", async () => { - const offset = Math.floor(marketDataFetchInterval / 2); - const expectedDelay = marketDataFetchInterval - offset; - - localStorage.setItem( - storeKey, - JSON.stringify({ - data: "D", - lastUpdate: new Date(Date.now() - marketDataFetchInterval + offset), - }) - ); - - marketDataStore = (await import("../marketDataStore")).default; - - expect(duskAPI.getMarketData).not.toHaveBeenCalled(); - - await vi.advanceTimersByTimeAsync(expectedDelay - 1); - - expect(duskAPI.getMarketData).not.toHaveBeenCalled(); - - await vi.advanceTimersByTimeAsync(1); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(1); - - await vi.advanceTimersByTimeAsync(marketDataFetchInterval + settleTime); - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(2); - }); - - it("should save the received data in local storage if the request has new data", async () => { - marketDataStore = (await import("../marketDataStore")).default; - - await vi.advanceTimersByTimeAsync(settleTime); - - const expectedStorage = { - data: fakeMarketDataA, - lastUpdate: new Date(), - }; - const expectedStore = { - ...expectedStorage, - error: null, - isLoading: false, - }; - - expect(duskAPI.getMarketData).toHaveBeenCalledTimes(1); - expect(get(marketDataStore)).toStrictEqual(expectedStore); - expect(localStorage.getItem(storeKey)).toStrictEqual( - JSON.stringify(expectedStorage) - ); - }); - - it("should leave the local storage as it is if the market data request ends with an error", async () => { - const error = new Error("some error"); - - vi.mocked(duskAPI.getMarketData).mockImplementationOnce(() => - rejectAfter(settleTime, error) - ); - - marketDataStore = (await import("../marketDataStore")).default; - - await vi.advanceTimersByTimeAsync(settleTime); - - expect(get(marketDataStore)).toStrictEqual({ - data: null, - error, - isLoading: false, - lastUpdate: null, - }); - - expect(localStorage.getItem(storeKey)).toBeNull(); - }); - - it("should ignore errors while writing to the storage and continue polling as usual", async () => { - const setDataSpy = vi - .spyOn(Storage.prototype, "setItem") - .mockImplementation(() => { - throw new Error("some error"); - }); - - // we don't want to see our fake error in the console - consoleErrorSpy.mockImplementationOnce(() => {}); - - marketDataStore = (await import("../marketDataStore")).default; - - await vi.advanceTimersByTimeAsync(settleTime); - - expect(setDataSpy).not.toHaveBeenCalled(); - expect(get(marketDataStore)).toStrictEqual({ - data: fakeMarketDataA, - error: null, - isLoading: false, - lastUpdate: new Date(), - }); - - expect(consoleErrorSpy).toHaveBeenCalledTimes(1); - - setDataSpy.mockRestore(); - }); - }); -}); diff --git a/explorer/src/lib/stores/appStore.js b/explorer/src/lib/stores/appStore.js deleted file mode 100644 index 8430f2e3dd..0000000000 --- a/explorer/src/lib/stores/appStore.js +++ /dev/null @@ -1,80 +0,0 @@ -import { get, writable } from "svelte/store"; -import { browser } from "$app/environment"; - -const maxWidthMediaQuery = window.matchMedia("(max-width: 1024px)"); -const browserDefaults = browser - ? { - darkMode: window.matchMedia("(prefers-color-scheme: dark)").matches, - } - : { - darkMode: false, - }; -const DEFAULT_FETCH_INTERVAL = 10000; -const DEFAULT_MARKET_FETCH_INTERVAL = 120000; -const DEFAULT_PROVISIONERS_FETCH_INTERVAL = 30000; -const DEFAULT_STATS_FETCH_INTERVAL = DEFAULT_FETCH_INTERVAL; - -/** @type {AppStoreContent} */ -const initialState = { - ...browserDefaults, - blocksListEntries: Number(import.meta.env.VITE_BLOCKS_LIST_ENTRIES), - chainInfoEntries: Number(import.meta.env.VITE_CHAIN_INFO_ENTRIES), - fetchInterval: - Number(import.meta.env.VITE_REFETCH_INTERVAL) || DEFAULT_FETCH_INTERVAL, - hasTouchSupport: "ontouchstart" in window || navigator.maxTouchPoints > 0, - isSmallScreen: maxWidthMediaQuery.matches, - marketDataFetchInterval: - Number(import.meta.env.VITE_MARKET_DATA_REFETCH_INTERVAL) || - DEFAULT_MARKET_FETCH_INTERVAL, - nodeInfo: { - /* eslint-disable camelcase */ - bootstrapping_nodes: [], - chain_id: undefined, - kadcast_address: "", - version: "", - version_build: "", - /* eslint-enable camelcase */ - }, - provisionersFetchInterval: Number( - import.meta.env.PROVISIONERS_REFETCH_INTERVAL || - DEFAULT_PROVISIONERS_FETCH_INTERVAL - ), - statsFetchInterval: - Number(import.meta.env.VITE_STATS_REFETCH_INTERVAL) || - DEFAULT_STATS_FETCH_INTERVAL, - transactionsListEntries: Number( - import.meta.env.VITE_TRANSACTIONS_LIST_ENTRIES - ), -}; -const store = writable(initialState); -const { set, subscribe } = store; - -maxWidthMediaQuery.addEventListener("change", (event) => { - set({ - ...get(store), - isSmallScreen: event.matches, - }); -}); - -/** @param {NodeInfo} nodeInfo */ -const setNodeInfo = (nodeInfo) => { - set({ - ...get(store), - nodeInfo, - }); -}; - -/** @param {boolean} darkMode */ -const setTheme = (darkMode) => { - set({ - ...get(store), - darkMode, - }); -}; - -/** @type {AppStore} */ -export default { - setNodeInfo, - setTheme, - subscribe, -}; diff --git a/explorer/src/lib/stores/index.js b/explorer/src/lib/stores/index.js deleted file mode 100644 index 1eec2efe2b..0000000000 --- a/explorer/src/lib/stores/index.js +++ /dev/null @@ -1,3 +0,0 @@ -export { default as appStore } from "./appStore"; -export { default as marketDataStore } from "./marketDataStore"; -export { default as nodeLocationStore } from "./nodeLocationStore"; diff --git a/explorer/src/lib/stores/marketDataStore.js b/explorer/src/lib/stores/marketDataStore.js deleted file mode 100644 index c78e58a020..0000000000 --- a/explorer/src/lib/stores/marketDataStore.js +++ /dev/null @@ -1,107 +0,0 @@ -import { derived, get } from "svelte/store"; - -import { createPollingDataStore } from "$lib/dusk/svelte-stores"; -import { MarketDataInfo } from "$lib/market-data"; -import { duskAPI } from "$lib/services"; - -import appStore from "./appStore"; - -const storeKey = "market-data"; - -/** - * @param {"reading" | "storing"} action - * @param {unknown} err - */ -const logStoreError = (action, err) => - /* eslint-disable-next-line no-console */ - console.error(`Error while ${action} market data: %s`, err); - -/** @type {() => MarketDataStorage | null} */ -function getStorage() { - try { - const storedData = localStorage.getItem(storeKey); - - return storedData ? MarketDataInfo.parse(storedData).toStorageData() : null; - } catch (err) { - logStoreError("reading", err); - - return null; - } -} - -/** @param {MarketDataInfo} info */ -function setStorage(info) { - try { - localStorage.setItem(storeKey, info.toJSON()); - } catch (err) { - logStoreError("storing", err); - } -} - -const fetchInterval = get(appStore).marketDataFetchInterval; -const pollingDataStore = createPollingDataStore( - duskAPI.getMarketData, - fetchInterval -); - -/** @type {MarketDataStoreContent} */ -const initialState = { - ...get(pollingDataStore), - lastUpdate: null, - ...getStorage(), -}; - -const marketDataStore = derived( - pollingDataStore, - ($pollingDataStore, set) => { - const current = get(marketDataStore); - const isDataChanged = $pollingDataStore.data !== current.data; - const hasNewData = $pollingDataStore.data && isDataChanged; - const newStore = { - data: $pollingDataStore.data ?? current.data, - error: hasNewData ? null : ($pollingDataStore.error ?? current.error), - isLoading: $pollingDataStore.isLoading, - lastUpdate: hasNewData - ? new Date() - : current.data - ? current.lastUpdate - : null, - }; - - if (hasNewData) { - setStorage( - new MarketDataInfo( - newStore.data, - /** @type {Date}*/ (newStore.lastUpdate) - ) - ); - } - - set(newStore); - }, - initialState -); - -function isDataStale() { - const { error, isLoading, lastUpdate } = get(marketDataStore); - - return ( - !!lastUpdate && - (error !== null || (!isLoading && Date.now() > +lastUpdate + fetchInterval)) - ); -} - -if (!initialState.lastUpdate || isDataStale()) { - pollingDataStore.start(); -} else { - setTimeout( - pollingDataStore.start, - +initialState.lastUpdate + fetchInterval - Date.now() - ); -} - -/** @type {MarketDataStore} */ -export default { - isDataStale, - subscribe: marketDataStore.subscribe, -}; diff --git a/explorer/src/lib/stores/nodeLocationStore.js b/explorer/src/lib/stores/nodeLocationStore.js deleted file mode 100644 index e7d25b7a60..0000000000 --- a/explorer/src/lib/stores/nodeLocationStore.js +++ /dev/null @@ -1,10 +0,0 @@ -import { createDataStore } from "$lib/dusk/svelte-stores"; -import { duskAPI } from "$lib/services"; - -const locationsDataStore = createDataStore(duskAPI.getNodeLocations); -locationsDataStore.getData(); - -/** @type {NodeLocationStore} */ -export default { - subscribe: locationsDataStore.subscribe, -}; diff --git a/explorer/src/lib/stores/stores.d.ts b/explorer/src/lib/stores/stores.d.ts deleted file mode 100644 index 6c9aa2d5ee..0000000000 --- a/explorer/src/lib/stores/stores.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -type AppStore = import("svelte/store").Readable & { - setNodeInfo: (value: NodeInfo) => void; - setTheme: (value: boolean) => void; -}; - -type AppStoreContent = { - blocksListEntries: number; - chainInfoEntries: number; - darkMode: boolean; - fetchInterval: number; - isSmallScreen: boolean; - hasTouchSupport: boolean; - marketDataFetchInterval: number; - provisionersFetchInterval: number; - nodeInfo: NodeInfo; - statsFetchInterval: number; - transactionsListEntries: number; -}; - -type MarketDataStore = - import("svelte/store").Readable & { - isDataStale: () => boolean; - }; - -type MarketDataStoreContent = { - data: MarketData | null; - error: Error | null; - isLoading: boolean; - lastUpdate: Date | null; -}; - -type NetworkOption = { - label: string; - value: URL; -}; - -type NodeLocationStore = - import("svelte/store").Readable; - -type NodeLocationStoreContent = { - data: NodeLocation[] | null; - error: Error | null; - isLoading: boolean; -}; - -type NodeInfo = { - bootstrapping_nodes: Array; - chain_id: number | null | undefined; - kadcast_address: string; - version: string; - version_build: string; -}; diff --git a/explorer/src/lib/url/__tests__/makeNodeUrl.spec.js b/explorer/src/lib/url/__tests__/makeNodeUrl.spec.js deleted file mode 100644 index 2a522eb1fd..0000000000 --- a/explorer/src/lib/url/__tests__/makeNodeUrl.spec.js +++ /dev/null @@ -1,84 +0,0 @@ -import { afterEach, describe, expect, it, vi } from "vitest"; - -import { makeNodeUrl } from ".."; - -const protocol = "https://"; - -afterEach(async () => { - vi.unstubAllGlobals(); - vi.unstubAllEnvs(); -}); - -describe("makeNodeUrl", () => { - const localhostString = window.location.hostname; - - it("should return a local URL when VITE_NODE_URL is not set", () => { - vi.stubEnv("VITE_NODE_URL", ""); - - expect(makeNodeUrl().hostname).toBe(localhostString); - }); - - it("should return a local URL with no base path when VITE_NODE_URL is not set and VITE_RUSK_PATH is not set", () => { - vi.stubEnv("VITE_NODE_URL", ""); - vi.stubEnv("VITE_RUSK_PATH", ""); - - expect(makeNodeUrl().hostname).toBe(localhostString); - expect(makeNodeUrl().pathname).toBe("/"); - }); - - it("should return a local URL with a base path when `VITE_NODE_URL` is not set and `VITE_RUSK_PATH` is set to a valid string", () => { - vi.stubEnv("VITE_NODE_URL", ""); - vi.stubEnv("VITE_RUSK_PATH", "/testing"); - - expect(makeNodeUrl().hostname).toBe(localhostString); - expect(makeNodeUrl().pathname).toBe("/testing"); - }); - - it("should return the devnet URL when the hostname starts with 'apps.staging.devnet'", () => { - const hostname = "apps.staging.devnet.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("devnet.nodes.dusk.network"); - }); - - it("should return the devnet URL when the hostname starts with 'apps.devnet'", () => { - const hostname = "apps.devnet.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("devnet.nodes.dusk.network"); - }); - - it("should return the testnet URL when the hostname starts with 'apps.staging.testnet'", () => { - const hostname = "apps.staging.testnet.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("testnet.nodes.dusk.network"); - }); - - it("should return the testnet URL when the hostname starts with 'apps.testnet'", () => { - const hostname = "apps.testnet.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("testnet.nodes.dusk.network"); - }); - - it("should return the mainnet URL when the hostname starts with 'apps.staging'", () => { - const hostname = "apps.staging.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("nodes.dusk.network"); - }); - - it("should return the mainnet URL when the hostname starts with 'apps'", () => { - const hostname = "apps.dusk.network"; - - vi.stubGlobal("location", { hostname, protocol }); - - expect(makeNodeUrl().hostname).toBe("nodes.dusk.network"); - }); -}); diff --git a/explorer/src/lib/url/index.js b/explorer/src/lib/url/index.js deleted file mode 100644 index 6490bc3084..0000000000 --- a/explorer/src/lib/url/index.js +++ /dev/null @@ -1 +0,0 @@ -export { default as makeNodeUrl } from "./makeNodeUrl"; diff --git a/explorer/src/lib/url/makeNodeUrl.js b/explorer/src/lib/url/makeNodeUrl.js deleted file mode 100644 index 60fcbaaa68..0000000000 --- a/explorer/src/lib/url/makeNodeUrl.js +++ /dev/null @@ -1,52 +0,0 @@ -/** - * Constructs a node URL based on the current subdomain - * - * @param {string} path - * @returns {URL} nodeUrl - */ -function makeNodeUrl(path = "") { - if (path !== "" && !path.startsWith("/")) { - throw new Error("A path must start with a '/'."); - } - - const subDomains = window.location.hostname.split("."); - const hostedNodeDomain = subDomains.slice(-2).join("."); - const nodeBaseUrl = import.meta.env.VITE_NODE_URL || ""; - const nodeBasePath = import.meta.env.VITE_RUSK_PATH || ""; - - /** - * @param {string} base - * @returns {URL} - */ - const buildHostedNodeUrl = (base) => - new URL( - `${window.location.protocol}${base}${hostedNodeDomain}${nodeBasePath}${path}` - ); - - let nodeUrl; - - switch (`${subDomains[0]}.${subDomains[1]}.${subDomains[2]}`) { - case "apps.dusk.network": // mainnet - case "apps.staging.dusk": // mainnet staging - nodeUrl = buildHostedNodeUrl("nodes."); - break; - case "apps.devnet.dusk": - case "apps.staging.devnet": - nodeUrl = buildHostedNodeUrl("devnet.nodes."); - break; - case "apps.testnet.dusk": - case "apps.staging.testnet": - nodeUrl = buildHostedNodeUrl("testnet.nodes."); - break; - default: - nodeUrl = new URL( - `${nodeBaseUrl}${nodeBasePath}${path}`, - import.meta.url - ); - break; - } - - return nodeUrl; -} - -export default makeNodeUrl; diff --git a/explorer/src/lib/utils/encoders/base58.js b/explorer/src/lib/utils/encoders/base58.js deleted file mode 100644 index c5b3faf188..0000000000 --- a/explorer/src/lib/utils/encoders/base58.js +++ /dev/null @@ -1,68 +0,0 @@ -// @ts-nocheck -/* eslint-disable */ -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. -// -// Copyright (c) DUSK NETWORK. All rights reserved. - -const A = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; - -// Uint8Array raw byte input -export function encode(buffer) { - var d = [], //the array for storing the stream of base58 digits - s = "", //the result string variable that will be returned - i, //the iterator variable for the byte input - j, //the iterator variable for the base58 digit array (d) - c, //the carry amount variable that is used to overflow from the current base58 digit to the next base58 digit - n; //a temporary placeholder variable for the current base58 digit - for (i in buffer) { - //loop through each byte in the input stream - ((j = 0), //reset the base58 digit iterator - (c = buffer[i])); //set the initial carry amount equal to the current byte amount - s += c || s.length ^ i ? "" : 1; //prepend the result string with a "1" (0 in base58) if the byte stream is zero and non-zero bytes haven't been seen yet (to ensure correct decode length) - while (j in d || c) { - //start looping through the digits until there are no more digits and no carry amount - n = d[j]; //set the placeholder for the current base58 digit - n = n ? n * 256 + c : c; //shift the current base58 one byte and add the carry amount (or just add the carry amount if this is a new digit) - c = (n / 58) | 0; //find the new carry amount (floored integer of current digit divided by 58) - d[j] = n % 58; //reset the current base58 digit to the remainder (the carry amount will pass on the overflow) - j++; //iterate to the next base58 digit - } - } - while (j--) - //since the base58 digits are backwards, loop through them in reverse order - s += A[d[j]]; //lookup the character associated with each base58 digit - return s; //return the final base58 string -} - -// Base58 encoded string input -export function decode(string) { - var d = [], //the array for storing the stream of decoded bytes - b = [], //the result byte array that will be returned - i, //the iterator variable for the base58 string - j, //the iterator variable for the byte array (d) - c, //the carry amount variable that is used to overflow from the current byte to the next byte - n; //a temporary placeholder variable for the current byte - for (i in string) { - //loop through each base58 character in the input string - ((j = 0), //reset the byte iterator - (c = A.indexOf(string[i]))); //set the initial carry amount equal to the current base58 digit - if (c < 0) - //see if the base58 digit lookup is invalid (-1) - return undefined; //if invalid base58 digit, bail out and return undefined - c || b.length ^ i ? i : b.push(0); //prepend the result array with a zero if the base58 digit is zero and non-zero characters haven't been seen yet (to ensure correct decode length) - while (j in d || c) { - //start looping through the bytes until there are no more bytes and no carry amount - n = d[j]; //set the placeholder for the current byte - n = n ? n * 58 + c : c; //shift the current byte 58 units and add the carry amount (or just add the carry amount if this is a new byte) - c = n >> 8; //find the new carry amount (1-byte shift of current byte value) - d[j] = n % 256; //reset the current byte to the remainder (the carry amount will pass on the overflow) - j++; //iterate to the next byte - } - } - while (j--) - //since the byte array is backwards, loop through it in reverse order - b.push(d[j]); //append each byte to the result - return new Uint8Array(b); //return the final byte array in Uint8Array format -} diff --git a/explorer/src/routes/+error.svelte b/explorer/src/routes/+error.svelte deleted file mode 100644 index 81c4db21bd..0000000000 --- a/explorer/src/routes/+error.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - - -
- -

- Error {status}
- {error?.message ?? ""} -

-
-
- - diff --git a/explorer/src/routes/+layout.js b/explorer/src/routes/+layout.js deleted file mode 100644 index c1a2b64b8d..0000000000 --- a/explorer/src/routes/+layout.js +++ /dev/null @@ -1,5 +0,0 @@ -/* istanbul ignore file */ -export const csr = true; -export const prerender = true; -export const ssr = false; -export const trailingSlash = "always"; diff --git a/explorer/src/routes/+layout.svelte b/explorer/src/routes/+layout.svelte deleted file mode 100644 index 1621e22c1d..0000000000 --- a/explorer/src/routes/+layout.svelte +++ /dev/null @@ -1,43 +0,0 @@ - - -
- toggleScroll(e.detail)} /> -
-
- -
-