diff --git a/lazer/cardano/safequote-veltrix/.gitignore b/lazer/cardano/safequote-veltrix/.gitignore new file mode 100644 index 00000000..91ee4a2d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/.gitignore @@ -0,0 +1,59 @@ +# Node / Next +node_modules/ +.pnpm-store/ +.next/ +out/ +dist/ +build/ +coverage/ + +# Logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +*.log + +# Env files +.env +.env.* +!.env.example + +# OS / editor +.DS_Store +Thumbs.db +.vscode/ +.idea/ + +# TypeScript +*.tsbuildinfo + +# Python +__pycache__/ +*.pyc + +# Aiken / generated artifacts +artifacts/ +build/packages/ +tmp/ + +# Cardano / local secrets +*.skey +*.vkey +*.addr +*.seed +wallet.json +*.mnemonic + +# Test outputs +playwright-report/ +test-results/ + +# Keep source, ignore local dependency installs inside subprojects +safequote-app-website/node_modules/ +safequote-app-website/.next/ +safequote-app-website/.env.local +safequote-app-website/.env.development.local +safequote-app-website/.env.production.local + +safequote-app-aiken/build/packages/ diff --git a/lazer/cardano/safequote-veltrix/README.md b/lazer/cardano/safequote-veltrix/README.md new file mode 100644 index 00000000..0c00dc1b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/README.md @@ -0,0 +1,68 @@ +# SafeQuote + +**Team:** Veltrix +**Member:** Elio Esis +**Contact:** eesis.dev@gmail.com + +## Overview + +SafeQuote is a Cardano preprod web app that lets a seller issue an invoice in USD and settle it in ADA while preserving the USD value with on-chain Pyth validation. + +The flow is wallet-only. A browser wallet connects to the app, creates an invoice, and mints an invoice NFT that represents that invoice. Another wallet can pay the invoice by providing the correct PIN and sending enough ADA to satisfy the USD amount according to the current ADA/USD price verified on-chain. + +## How the app works + +1. A seller connects a CIP-30 browser wallet on Cardano preprod. +2. The seller creates an invoice denominated in USD. +3. The app generates a PIN and stores its hash in the invoice datum. +4. An invoice NFT is minted to represent the invoice. +5. A buyer connects a wallet and opens the invoice. +6. The buyer enters the PIN and attempts to pay in ADA. +7. The transaction uses the SafeQuote Aiken validator to verify: + - the Pyth update is valid + - the feed used is ADA/USD + - the ADA sent is at least the minimum required for the USD amount + - the PIN matches the stored hash + - the invoice NFT is transferred to the buyer + - the ADA settlement goes to the seller +8. If all checks pass, the transaction succeeds on-chain. + +## How Pyth is used + +SafeQuote uses Pyth as the source of truth for the ADA/USD price. + +### Off-chain + +The web app calls the Pyth Lazer Cardano flow to fetch the latest ADA/USD update and prepares the binary payload required for transaction building. + +- Pyth product: Pyth Lazer / Cardano consumer flow +- Feed used: ADA/USD +- Cardano feed id: `16` +- Preprod policy id: `d799d287105dea9377cdf9ea8502a83d2b9eb2d2050a8aea800a21e6` + +### On-chain + +The Aiken validator consumes the Pyth update on-chain and verifies the ADA/USD quote before accepting payment. This ensures the invoice value is enforced in USD while settlement still happens in ADA. + +## Stack + +- Cardano preprod +- Aiken +- Next.js +- TypeScript +- MeshJS +- Pyth Lazer Cardano integration + +## Current status + +This project is being built as a hackathon MVP focused on: +- wallet-only authentication +- USD invoices settled in ADA +- invoice NFT representation +- PIN-protected payment flow +- on-chain Pyth verification with Aiken + +## Notes + +- This project targets Cardano preprod. +- Pyth API keys are kept in private environment variables and are not committed. diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml new file mode 100644 index 00000000..b80488dc --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.github/workflows/continuous-integration.yml @@ -0,0 +1,18 @@ +name: Continuous Integration + +on: + push: + branches: ["main"] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: aiken-lang/setup-aiken@v1 + with: + version: v1.1.19 + - run: aiken fmt --check + - run: aiken check -D + - run: aiken build diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore new file mode 100644 index 00000000..ff7811b1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/.gitignore @@ -0,0 +1,6 @@ +# Aiken compilation artifacts +artifacts/ +# Aiken's project working directory +build/ +# Aiken's default documentation export +docs/ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md b/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md new file mode 100644 index 00000000..c72213e2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/README.md @@ -0,0 +1,65 @@ +# safequote_app_aiken + +Write validators in the `validators` folder, and supporting functions in the `lib` folder using `.ak` as a file extension. + +```aiken +validator my_first_validator { + spend(_datum: Option, _redeemer: Data, _output_reference: Data, _context: Data) { + True + } +} +``` + +## Building + +```sh +aiken build +``` + +## Configuring + +**aiken.toml** +```toml +[config.default] +network_id = 41 +``` + +Or, alternatively, write conditional environment modules under `env`. + +## Testing + +You can write tests in any module using the `test` keyword. For example: + +```aiken +use config + +test foo() { + config.network_id + 1 == 42 +} +``` + +To run all tests, simply do: + +```sh +aiken check +``` + +To run only tests matching the string `foo`, do: + +```sh +aiken check -m foo +``` + +## Documentation + +If you're writing a library, you might want to generate an HTML documentation for it. + +Use: + +```sh +aiken docs +``` + +## Resources + +Find more on the [Aiken's user manual](https://aiken-lang.org). diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock new file mode 100644 index 00000000..f4adff39 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.lock @@ -0,0 +1,27 @@ +# This file was generated by Aiken +# You typically do not need to edit this file + +[[requirements]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +source = "github" + +[[requirements]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +source = "github" + +[[packages]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +requirements = [] +source = "github" + +[[packages]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +requirements = [] +source = "github" + +[etags] +"pyth-network/pyth-lazer-cardano@main" = [{ secs_since_epoch = 1774214111, nanos_since_epoch = 474416700 }, "a46dacd97a22eb07feeaf966d48c3116c8249ddc836705656e3135cea285bcfc"] diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml new file mode 100644 index 00000000..64d9b033 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/aiken.toml @@ -0,0 +1,23 @@ +name = "esis8/safequote_app_aiken" +version = "0.0.0" +compiler = "v1.1.19" +plutus = "v3" +license = "Apache-2.0" +description = "SafeQuote Aiken contracts" + +[repository] +user = "esis8" +project = "safequote_app_aiken" +platform = "github" + +[[dependencies]] +name = "aiken-lang/stdlib" +version = "v3.0.0" +source = "github" + +[[dependencies]] +name = "pyth-network/pyth-lazer-cardano" +version = "main" +source = "github" + +[config] diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json b/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json new file mode 100644 index 00000000..d0cd7da2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/plutus.json @@ -0,0 +1,181 @@ +{ + "preamble": { + "title": "esis8/safequote_app_aiken", + "description": "SafeQuote Aiken contracts", + "version": "0.0.0", + "plutusVersion": "v3", + "compiler": { + "name": "Aiken", + "version": "v1.1.19+e525483" + }, + "license": "Apache-2.0" + }, + "validators": [ + { + "title": "invoice.invoice.spend", + "datum": { + "title": "datum", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceDatum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceRedeemer" + } + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "invoice.invoice.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.mint", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/mint_invoice_nft~1MintInvoiceRedeemer" + } + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + } + ], + "definitions": { + "ByteArray": { + "title": "ByteArray", + "dataType": "bytes" + }, + "Int": { + "dataType": "integer" + }, + "aiken/crypto/VerificationKeyHash": { + "title": "VerificationKeyHash", + "dataType": "bytes" + }, + "cardano/assets/AssetName": { + "title": "AssetName", + "dataType": "bytes" + }, + "cardano/assets/PolicyId": { + "title": "PolicyId", + "dataType": "bytes" + }, + "cardano/transaction/OutputReference": { + "title": "OutputReference", + "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", + "anyOf": [ + { + "title": "OutputReference", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "transaction_id", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "output_index", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceDatum": { + "title": "InvoiceDatum", + "anyOf": [ + { + "title": "InvoiceDatum", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "usd_amount_cents", + "$ref": "#/definitions/Int" + }, + { + "title": "pyth_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "pin_hash", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "invoice_nft_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "invoice_nft_name", + "$ref": "#/definitions/cardano~1assets~1AssetName" + }, + { + "title": "deadline", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceRedeemer": { + "title": "InvoiceRedeemer", + "anyOf": [ + { + "title": "Pay", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "buyer", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "pin", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "mint_invoice_nft/MintInvoiceRedeemer": { + "title": "MintInvoiceRedeemer", + "anyOf": [ + { + "title": "MintInvoice", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "invoice_ref", + "$ref": "#/definitions/cardano~1transaction~1OutputReference" + } + ] + } + ] + } + } +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak new file mode 100644 index 00000000..bdfd04d7 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/test/invoice_test.ak @@ -0,0 +1,5 @@ +use validators/invoice + +test minimum_lovelace_required_handles_negative_exponent() { + invoice.minimum_lovelace_required(100, 250, -2) == 400_000 +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak new file mode 100644 index 00000000..62000a87 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/invoice.ak @@ -0,0 +1,120 @@ +use aiken/collection/list +use aiken/crypto.{VerificationKeyHash, blake2b_256} +use aiken/math +use cardano/address +use cardano/assets.{AssetName, PolicyId} +use cardano/transaction.{OutputReference, Transaction} +use pyth +use types/u32 + +pub const ada_usd_feed_id = 16 + +pub type InvoiceDatum { + InvoiceDatum { + seller: VerificationKeyHash, + usd_amount_cents: Int, + pyth_policy_id: PolicyId, + pin_hash: ByteArray, + invoice_nft_policy_id: PolicyId, + invoice_nft_name: AssetName, + deadline: Int, + } +} + +pub type InvoiceRedeemer { + Pay { buyer: VerificationKeyHash, pin: ByteArray } +} + +pub fn minimum_lovelace_required( + usd_amount_cents: Int, + ada_usd_price: Int, + exponent: Int, +) -> Int { + let scale = math.pow(10, 0 - exponent) + let numerator = usd_amount_cents * 1_000_000 * scale + let denominator = ada_usd_price * 100 + ( numerator + denominator - 1 ) / denominator +} + +pub fn read_ada_usd_quote( + pyth_policy_id: PolicyId, + tx: Transaction, +) -> (Int, Int) { + expect [update] = pyth.get_updates(pyth_policy_id, tx) + + expect Some(feed) = + list.find( + update.feeds, + fn(feed) { u32.as_int(feed.feed_id) == ada_usd_feed_id }, + ) + + expect Some(Some(price)) = feed.price + expect Some(exponent) = feed.exponent + (price, exponent) +} + +pub fn pays_seller_at_least( + seller: VerificationKeyHash, + minimum_lovelace: Int, + tx: Transaction, +) -> Bool { + let seller_address = address.from_verification_key(seller) + + list.any( + tx.outputs, + fn(output) { + output.address == seller_address && assets.lovelace_of(output.value) >= minimum_lovelace + }, + ) +} + +pub fn sends_invoice_nft_to_buyer( + buyer: VerificationKeyHash, + invoice_nft_policy_id: PolicyId, + invoice_nft_name: AssetName, + tx: Transaction, +) -> Bool { + let buyer_address = address.from_verification_key(buyer) + + list.any( + tx.outputs, + fn(output) { + output.address == buyer_address && assets.has_nft( + output.value, + invoice_nft_policy_id, + invoice_nft_name, + ) + }, + ) +} + +validator invoice { + spend( + datum: Option, + redeemer: InvoiceRedeemer, + _own_ref: OutputReference, + tx: Transaction, + ) { + expect Some(datum) = datum + let Pay { buyer, pin } = redeemer + + let (price, exponent) = read_ada_usd_quote(datum.pyth_policy_id, tx) + let min_lovelace = + minimum_lovelace_required(datum.usd_amount_cents, price, exponent) + + and { + blake2b_256(pin) == datum.pin_hash, + pays_seller_at_least(datum.seller, min_lovelace, tx), + sends_invoice_nft_to_buyer( + buyer, + datum.invoice_nft_policy_id, + datum.invoice_nft_name, + tx, + ), + } + } + + else(_) { + fail + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak new file mode 100644 index 00000000..5905addf --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-aiken/validators/mint_invoice_nft.ak @@ -0,0 +1,17 @@ +use aiken/crypto.{VerificationKeyHash} +use cardano/assets.{PolicyId} +use cardano/transaction.{OutputReference, Transaction} + +pub type MintInvoiceRedeemer { + MintInvoice { seller: VerificationKeyHash, invoice_ref: OutputReference } +} + +validator mint_invoice_nft { + mint(_redeemer: MintInvoiceRedeemer, _policy_id: PolicyId, _tx: Transaction) { + True + } + + else(_) { + fail + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore b/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore new file mode 100644 index 00000000..5ef6a520 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/README.md b/lazer/cardano/safequote-veltrix/safequote-app-website/README.md new file mode 100644 index 00000000..e215bc4c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs b/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs new file mode 100644 index 00000000..05e726d1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/eslint.config.mjs @@ -0,0 +1,18 @@ +import { defineConfig, globalIgnores } from "eslint/config"; +import nextVitals from "eslint-config-next/core-web-vitals"; +import nextTs from "eslint-config-next/typescript"; + +const eslintConfig = defineConfig([ + ...nextVitals, + ...nextTs, + // Override default ignores of eslint-config-next. + globalIgnores([ + // Default ignores of eslint-config-next: + ".next/**", + "out/**", + "build/**", + "next-env.d.ts", + ]), +]); + +export default eslintConfig; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts new file mode 100644 index 00000000..e9ffa308 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/package.json b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json new file mode 100644 index 00000000..d2804e77 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/package.json @@ -0,0 +1,33 @@ +{ + "name": "safequote-app-website", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "eslint" + }, + "dependencies": { + "@hookform/resolvers": "^5.2.2", + "@meshsdk/core": "1.9.0-beta.101", + "@noble/hashes": "^2.0.1", + "@pythnetwork/pyth-lazer-sdk": "^6.2.1", + "dotenv": "^17.3.1", + "next": "16.2.1", + "react": "19.2.4", + "react-dom": "19.2.4", + "react-hook-form": "^7.72.0", + "sass": "^1.98.0", + "zod": "^4.3.6" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "eslint": "^9", + "eslint-config-next": "16.2.1", + "tsx": "^4.21.0", + "typescript": "^5" + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml new file mode 100644 index 00000000..16f7f2fa --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-lock.yaml @@ -0,0 +1,5661 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@hookform/resolvers': + specifier: ^5.2.2 + version: 5.2.2(react-hook-form@7.72.0(react@19.2.4)) + '@meshsdk/core': + specifier: 1.9.0-beta.101 + version: 1.9.0-beta.101(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@pythnetwork/pyth-lazer-sdk': + specifier: ^6.2.1 + version: 6.2.1 + dotenv: + specifier: ^17.3.1 + version: 17.3.1 + next: + specifier: 16.2.1 + version: 16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0) + react: + specifier: 19.2.4 + version: 19.2.4 + react-dom: + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) + react-hook-form: + specifier: ^7.72.0 + version: 7.72.0(react@19.2.4) + sass: + specifier: ^1.98.0 + version: 1.98.0 + zod: + specifier: ^4.3.6 + version: 4.3.6 + devDependencies: + '@types/node': + specifier: ^20 + version: 20.19.37 + '@types/react': + specifier: ^19 + version: 19.2.14 + '@types/react-dom': + specifier: ^19 + version: 19.2.3(@types/react@19.2.14) + eslint: + specifier: ^9 + version: 9.39.4 + eslint-config-next: + specifier: 16.2.1 + version: 16.2.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + tsx: + specifier: ^4.21.0 + version: 4.21.0 + typescript: + specifier: ^5 + version: 5.9.3 + +packages: + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + + '@biglup/is-cid@1.0.3': + resolution: {integrity: sha512-R0XPZ/IQhU2TtetSFI9vI+7kJOJYNiCncn5ixEBW+/LNaZCo2HK37Mq3pRNzrM4FryuAkyeqY7Ujmj3I3e3t9g==} + engines: {node: '>=16.0.0', npm: '>=7.0.0'} + + '@bufbuild/protobuf@1.10.1': + resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==} + + '@cardano-ogmios/client@6.9.0': + resolution: {integrity: sha512-IsoUVsaMXiYyhWrdVKYOA5PDlX0EZ2gaq4lfk4JelRw6mcWVxemUrMaU2ndvugO9LQ3SCM1nESPgMIU0xe5FWw==} + engines: {node: '>=14'} + + '@cardano-ogmios/schema@6.9.0': + resolution: {integrity: sha512-e7QVLF+dQMIv9p+p5CWQjMfBmkERYRa2wK2AjyehQZCJnecZ0gvTbRqewdX5VW4mVXf6KUfFyphsxWK46Pg6LA==} + engines: {node: '>=14'} + + '@cardano-sdk/core@0.46.12': + resolution: {integrity: sha512-yUA/xBUQMiMqIWiZPvIhM911pL3jNKg4PkZQ8qP9R7yU3NQ5x4RQkZ+zFDlVLxUt+gJiwIW2es0iPd8ObIKCxA==} + engines: {node: '>=16.20.2'} + peerDependencies: + rxjs: ^7.4.0 + peerDependenciesMeta: + rxjs: + optional: true + + '@cardano-sdk/crypto@0.4.5': + resolution: {integrity: sha512-ymliqxdmen5dGVaiMVQ0VnhrwaYUjbPD3sHoMj8NI6MTuxrREp3pLJASREtWhwmv9k+QzDT6CoyuIXnlEQiWZQ==} + engines: {node: '>=16.20.2'} + peerDependencies: + '@dcspark/cardano-multiplatform-lib-asmjs': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-browser': ^3.1.1 + '@dcspark/cardano-multiplatform-lib-nodejs': ^3.1.1 + peerDependenciesMeta: + '@dcspark/cardano-multiplatform-lib-asmjs': + optional: true + '@dcspark/cardano-multiplatform-lib-browser': + optional: true + '@dcspark/cardano-multiplatform-lib-nodejs': + optional: true + + '@cardano-sdk/dapp-connector@0.13.26': + resolution: {integrity: sha512-4GptUVsGmgZhzKs+yp3360dA+HNdMi8IW1r2n1H63PYOJDPj2bjopBeyOGFn8Dmkzt+64rm2KyVyZM2SlcUq9Q==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/input-selection@0.14.28': + resolution: {integrity: sha512-pbysJUaIbbpesbv/f0XfFPKBb+bLjCmPcMfNJzpePSZBvr8bUcFpnfKtq28KthVdpe2mgL3k9ebTTcBSk7aERw==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/key-management@0.29.12': + resolution: {integrity: sha512-bctIVPg0DBCECnECIPCBfHwnF3En+AVJzpUdje+Q2a+/kryolw99i5Y7le+rpjq1LRypWUG0sUAGLY8D850epA==} + engines: {node: '>=16.20.2'} + + '@cardano-sdk/util@0.17.1': + resolution: {integrity: sha512-TCYe+wRguW1WgRlbWqhGPhcSBkzVzdIcCVgDDN7wiQk2dew0EWVqjsKeqDZdfwzy/s2kr/ZOgXIGywBn/Bzu/Q==} + engines: {node: '>=16.20.2'} + + '@cardanosolutions/json-bigint@1.1.0': + resolution: {integrity: sha512-Pdgz18cSwLKKgheOqW/dqbzNI+CliNT4AdaKaKY/P++J9qLxIB8MITCurlzbaFWV3W4nmK0CRQwI1yvuArmjFg==} + + '@chainsafe/is-ip@2.1.0': + resolution: {integrity: sha512-KIjt+6IfysQ4GCv66xihEitBjvhU/bixbbbFxdJ1sqCp4uJ0wuZiYBPhksZoy4lfaF0k9cwNzY5upEW/VWdw3w==} + + '@chainsafe/netmask@2.0.0': + resolution: {integrity: sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==} + + '@connectrpc/connect-node@1.4.0': + resolution: {integrity: sha512-0ANnrr6SvsjevsWEgdzHy7BaHkluZyS6s4xNoVt7RBHFR5V/kT9lPokoIbYUOU9JHzdRgTaS3x5595mwUsu15g==} + engines: {node: '>=16.0.0'} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + '@connectrpc/connect': 1.4.0 + + '@connectrpc/connect-web@1.4.0': + resolution: {integrity: sha512-13aO4psFbbm7rdOFGV0De2Za64DY/acMspgloDlcOKzLPPs0yZkhp1OOzAQeiAIr7BM/VOHIA3p8mF0inxCYTA==} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + '@connectrpc/connect': 1.4.0 + + '@connectrpc/connect@1.4.0': + resolution: {integrity: sha512-vZeOkKaAjyV4+RH3+rJZIfDFJAfr+7fyYr6sLDKbYX3uuTVszhFe9/YKf5DNqrDb5cKdKVlYkGn6DTDqMitAnA==} + peerDependencies: + '@bufbuild/protobuf': ^1.4.2 + + '@dnsquery/dns-packet@6.1.1': + resolution: {integrity: sha512-WXTuFvL3G+74SchFAtz3FgIYVOe196ycvGsMgvSH/8Goptb1qpIQtIuM4SOK9G9lhMWYpHxnXyy544ZhluFOew==} + engines: {node: '>=6'} + + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} + + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + + '@emurgo/cardano-message-signing-nodejs@1.1.0': + resolution: {integrity: sha512-PQRc8K8wZshEdmQenNUzVtiI8oJNF/1uAnBhidee5C4o1l2mDLOW+ur46HWHIFKQ6x8mSJTllcjMscHgzju0gQ==} + + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@foxglove/crc@0.0.3': + resolution: {integrity: sha512-DjIZsnL3CyP/yQ/vUYA9cjrD0a/8YXejI5ZmsaOiT16cLfZcTwaCxIN01/ys4jsy+dZCQ/9DnWFn7AEFbiMDaA==} + + '@harmoniclabs/bigint-utils@1.0.0': + resolution: {integrity: sha512-OhZMHcdtH2hHKMlxWFHf71PmKHdoi9ARpjS9mUu0/cd8VWDDjT7VQoQwC5NN/68iyO4O5Dojrvrp9tjG5BDABA==} + + '@harmoniclabs/biguint@1.0.0': + resolution: {integrity: sha512-5DyCIBDL4W+7ffR1IJSbGrCG4xEYxAlFH5gCNF42qtyL5ltwZ92Ae1MyXpHM2TUPy7ocSTqlLUsOdy+SvqVVPw==} + + '@harmoniclabs/bitstream@1.0.0': + resolution: {integrity: sha512-Ed/I46IuCiytE5QiMmmUo9kPJcypM7OuUqoRaAXUALL5C6LKLpT6kYE1qeuhLkx2/WvkHT18jcOX6jhM/nmqoA==} + + '@harmoniclabs/bytestring@1.0.0': + resolution: {integrity: sha512-d5m10O0okKc6QNX0pSRriFTkk/kNMnMBGbo5X3kEZwKaXTI4tDVoTZBL7bwbYHwOEdSxWJjVtlO9xtB7ZrYZNg==} + + '@harmoniclabs/cbor@1.6.0': + resolution: {integrity: sha512-KI25p8pHI1rmFZC9NYSxATwlCZ+KJdjydpptKebHcw03Iy7M+E8mF+hSnN5dTbS45xw5ZyKUgPLRgLo1sTuIoQ==} + + '@harmoniclabs/crypto@0.2.5': + resolution: {integrity: sha512-t2saWMFWBx8tOHotiYTTfQKhPGpWT4AMLXxq3u0apShVXNV0vgL0gEgSMudBjES/wrKByCqa2xmU70gadz26hA==} + + '@harmoniclabs/obj-utils@1.0.0': + resolution: {integrity: sha512-EO1bQBZAORrutcP+leP5YNDwNd/9TOE23VEvs3ktniXg6w0knUrLjUIl2Pkcbs/D1VQxqmsNpXho+vaMj00qxA==} + + '@harmoniclabs/pair@1.0.0': + resolution: {integrity: sha512-D9OBowsUsy1LctHxWzd9AngTzoo5x3rBiJ0gu579t41Q23pb+VNx1euEfluUEiaYbgljcl1lb/4D1fFTZd1tRQ==} + + '@harmoniclabs/plutus-data@1.2.6': + resolution: {integrity: sha512-rF046GZ07XDpjZBNybALKYSycjxCLzXKbhLylu9pRuZiii5fVXReEfgtLB29TsPBvGY6ZBeiyHgJnLgm+huZBw==} + peerDependencies: + '@harmoniclabs/bytestring': ^1.0.0 + '@harmoniclabs/cbor': ^1.3.0 + + '@harmoniclabs/uint8array-utils@1.0.4': + resolution: {integrity: sha512-Z454prSbX4geXGHyjjcn9vm6u9NsD3VJykv8f8yE1VjIXSPitaLPEnm8u2+B+GMp1chYlLilOq+kW4OvJ6y28A==} + + '@harmoniclabs/uplc@1.4.1': + resolution: {integrity: sha512-sELKStjxPBPBxBMylU4oBSUe0/8eJe2HqRblNSwrMu8Fso4YpSPDqHZ33iDZ8QAadVUsT5r2EQKX0TLrj7qXvQ==} + peerDependencies: + '@harmoniclabs/bytestring': ^1.0.0 + '@harmoniclabs/cbor': ^1.3.0 + '@harmoniclabs/crypto': ^0.3.0-dev0 + '@harmoniclabs/pair': ^1.0.0 + '@harmoniclabs/plutus-data': ^1.2.4 + + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} + peerDependencies: + react-hook-form: ^7.55.0 + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@libp2p/interface@3.1.0': + resolution: {integrity: sha512-RE7/XyvC47fQBe1cHxhMvepYKa5bFCUyFrrpj8PuM0E7JtzxU7F+Du5j4VXbg2yLDcToe0+j8mB7jvwE2AThYw==} + + '@meshsdk/common@1.9.0-beta.100': + resolution: {integrity: sha512-H3ktKR9eheRKZupg7DLdUr8A9dsefJbu7Wc+I1suwrv+oAZWiJ2wCuF3bX2QQo3LyWrSkVCE7WEiKFfQmukIww==} + + '@meshsdk/common@1.9.0-beta.101': + resolution: {integrity: sha512-5riUdwO78nSq61P+fNOMs5rfOVxm61N5T/JbdKE9oa8FMuAvgePBs6vesdCU1FSAQy4ppZI3Ez5q1ujoShw/7g==} + + '@meshsdk/core-cst@1.9.0-beta.100': + resolution: {integrity: sha512-gXC7c81puzv12C3xJ6vhH/KIEc/P6ScuXsgmLlqFMpDv0SuoMg+42HgdyWi0WrccVwi8cdepsn5YhtCaYVn0nw==} + + '@meshsdk/core-cst@1.9.0-beta.101': + resolution: {integrity: sha512-Vz7EFwc+9zNjhxt0LanY3283eqdjb78uyvodTKMixkYOJvDYprGY3Ul6B4w+IJ4fn/RfazFn9XtIk2Y+wIJ69w==} + + '@meshsdk/core@1.9.0-beta.101': + resolution: {integrity: sha512-tAg8V3+CJEwHMKsXHlfYsmTSZSz1fUIFzmGkH247ydjcynqNKjoZ10vtj0O2nI7QXT7oI9EhCJ6xikJC/jUXBQ==} + + '@meshsdk/provider@1.9.0-beta.100': + resolution: {integrity: sha512-930tN8ZxK/pOXCSlvLxWIUbP5KyEO7EloacuPjSNnRP9rVJlt/AoiW30CSV8l9ZegA9VH30pev9Svv0Qj/kjRQ==} + + '@meshsdk/transaction@1.9.0-beta.101': + resolution: {integrity: sha512-kjJ1zQgy3sVCNPwpcvpSrpQ2bA6AIz6sDJiPBgBSZqSzBp2qfto3ERIwXQ6eu7vvFzqnnDWcj/QSJB5O7FWqww==} + + '@meshsdk/wallet@1.9.0-beta.101': + resolution: {integrity: sha512-HAG8gyZY7HQJ66sPj6Id/ojhqbuGYe7xRj0Qu9z3iAXE9pq9h2FvSjCCxiclKEwyRot9Gk/+wMZTJCqSen0luw==} + + '@multiformats/dns@1.0.13': + resolution: {integrity: sha512-yr4bxtA3MbvJ+2461kYIYMsiiZj/FIqKI64hE4SdvWJUdWF9EtZLar38juf20Sf5tguXKFUruluswAO6JsjS2w==} + + '@multiformats/mafmt@12.1.6': + resolution: {integrity: sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==} + + '@multiformats/multiaddr@12.5.1': + resolution: {integrity: sha512-+DDlr9LIRUS8KncI1TX/FfUn8F2dl6BIxJgshS/yFQCNB5IAF0OGzcwB39g5NLE22s4qqDePv0Qof6HdpJ/4aQ==} + + '@multiformats/multiaddr@13.0.1': + resolution: {integrity: sha512-XToN915cnfr6Lr9EdGWakGJbPT0ghpg/850HvdC+zFX8XvpLZElwa8synCiwa8TuvKNnny6m8j8NVBNCxhIO3g==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@next/env@16.2.1': + resolution: {integrity: sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg==} + + '@next/eslint-plugin-next@16.2.1': + resolution: {integrity: sha512-r0epZGo24eT4g08jJlg2OEryBphXqO8aL18oajoTKLzHJ6jVr6P6FI58DLMug04MwD3j8Fj0YK0slyzneKVyzA==} + + '@next/swc-darwin-arm64@16.2.1': + resolution: {integrity: sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.2.1': + resolution: {integrity: sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.2.1': + resolution: {integrity: sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-arm64-musl@16.2.1': + resolution: {integrity: sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@next/swc-linux-x64-gnu@16.2.1': + resolution: {integrity: sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@next/swc-linux-x64-musl@16.2.1': + resolution: {integrity: sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@next/swc-win32-arm64-msvc@16.2.1': + resolution: {integrity: sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.2.1': + resolution: {integrity: sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@pythnetwork/pyth-lazer-sdk@6.2.1': + resolution: {integrity: sha512-+d+ATApOBF5z3YvqwP/5R42xr9vWpLOvbAFWDWldYiltlH8eU9PaGgeczgCs3it3STpnL+8jTXsUBhqv9T94Aw==} + engines: {node: ^24.0.0} + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@simplewebauthn/browser@13.3.0': + resolution: {integrity: sha512-BE/UWv6FOToAdVk0EokzkqQQDOWtNydYlY6+OrmiZ5SCNmb41VehttboTetUM3T/fr6EAFYVXjz4My2wg230rQ==} + + '@standard-schema/utils@0.3.0': + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} + + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + + '@types/base32-encoding@1.0.2': + resolution: {integrity: sha512-6kXiZ8gETqBU/B9ddcw15nwacX4iX9mLZTU0kghWK5u+OdjfJg6vxHh/vXoURWTyLSzs2jKgcq1lS3S/Tvl4mw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/json-bigint@1.0.4': + resolution: {integrity: sha512-ydHooXLbOmxBbubnA7Eh+RpBzuaIiQjh8WGJYQB50JFGFrdxW7JzVlyEV7fAXw0T2sqJ1ysTneJbiyNLqZRAag==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/node@20.19.37': + resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==} + + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.14': + resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==} + + '@typescript-eslint/eslint-plugin@8.57.1': + resolution: {integrity: sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.57.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.57.1': + resolution: {integrity: sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.57.1': + resolution: {integrity: sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.57.1': + resolution: {integrity: sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.57.1': + resolution: {integrity: sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.57.1': + resolution: {integrity: sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.57.1': + resolution: {integrity: sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.57.1': + resolution: {integrity: sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.57.1': + resolution: {integrity: sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.57.1': + resolution: {integrity: sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + + '@utxorpc/sdk@0.6.8': + resolution: {integrity: sha512-Mff6q2o7R2aam85KmjtAZDKPhJesMmnGFbk2M54lPO0FwrrWRfUf6DYezqWfYcjXgKQSHDuklAcdtF0weEENRA==} + + '@utxorpc/spec@0.16.0': + resolution: {integrity: sha512-EK2M0TBp14MrRCYDuFeJ+bAS39RxxLLh+CD08h/YvAgxSv/4ZOBCf1/sxHAGCBGGndB4heZYFeuQ+i1i8vP5lw==} + engines: {node: '>=20.0.0'} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + + abort-error@1.0.1: + resolution: {integrity: sha512-fxqCblJiIPdSXIUrxI0PL+eJG49QdP9SQ70qtB65MVAoMr2rASlOyAbJFOylfB467F/f+5BCLJJq58RYi7mGfg==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.3: + resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.3: + resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.4: + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} + engines: {node: '>= 0.4'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + async-function@1.0.0: + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} + engines: {node: '>= 0.4'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axe-core@4.11.1: + resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} + engines: {node: '>=4'} + + axios@1.13.6: + resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + b4a@1.8.0: + resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base32-encoding@1.0.0: + resolution: {integrity: sha512-k1gA7f00ODLY7YtuEQFz0Kn3huTCmL/JW+oQtw51ID+zxs5chj/YQ1bXN+Q0JsqiKB2Yn0oA0AA8uipFYgpagQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.10: + resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bip39@3.1.0: + resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} + + blake2b-wasm@2.4.0: + resolution: {integrity: sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w==} + + blake2b@2.1.4: + resolution: {integrity: sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@5.2.3: + resolution: {integrity: sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==} + + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001780: + resolution: {integrity: sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==} + + cbor@10.0.12: + resolution: {integrity: sha512-exQDevYd7ZQLP4moMQcZkKCVZsXLAtUSflObr3xTh4xzFIv/xBCdvCd6L259kQOUP2kcTC0jvC6PpZIf/WmRXA==} + engines: {node: '>=20'} + + chacha-native@2.0.3: + resolution: {integrity: sha512-93h+osfjhR2sMHAaapTLlL/COoBPEZ6upicPBQ4GfUyadoMb8t9/M0PKK8kC+F+DEA/Oy3Kg9w3HzY3J1foP3g==} + + chacha@2.1.0: + resolution: {integrity: sha512-FhVtqaZOiHlOKUkAWfDlJ+oe/O8iPQbCC0pFXJqphr4YQBCZPXa8Mv3j35+W4eWFWCoTUcW2u5IWDDkknygvVA==} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + data-view-buffer@1.0.2: + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.2: + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.1: + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} + engines: {node: '>= 0.4'} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + + dotenv@17.3.1: + resolution: {integrity: sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + electron-to-chromium@1.5.321: + resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-iterator-helpers@1.3.1: + resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.1.0: + resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} + engines: {node: '>= 0.4'} + + es-to-primitive@1.3.0: + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} + engines: {node: '>= 0.4'} + + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-next@16.2.1: + resolution: {integrity: sha512-qhabwjQZ1Mk53XzXvmogf8KQ0tG0CQXF0CZ56+2/lVhmObgmaqj7x5A1DSrWdZd3kwI7GTPGUjFne+krRxYmFg==} + peerDependencies: + eslint: '>=9.0.0' + typescript: '>=3.3.1' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.10.1: + resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-react-hooks@7.0.1: + resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + + eslint-plugin-react@7.37.5: + resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fraction.js@4.0.1: + resolution: {integrity: sha512-NQYzZw8MUsxSZFQo6E8tKOlmSd/BlDTNOR4puXFSHSwFwNaIlmbortQy5PDN/KnVQ4xWG2NtN0J0hjPw7eE06A==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.8: + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-random-values@2.1.0: + resolution: {integrity: sha512-q2yOLpLyA8f9unfv2LV8KVRUFeOIrQVS5cnqpbv6N+ea9j1rmW5dFKj/2Q7CK3juEfDYQgPxGt941VJcmw0jKg==} + engines: {node: 14 || 16 || >=18} + + get-symbol-description@1.1.0: + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.13.6: + resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@16.4.0: + resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + engines: {node: '>=18'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.2.0: + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} + engines: {node: '>= 0.4'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hashlru@2.3.0: + resolution: {integrity: sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + + i@0.3.7: + resolution: {integrity: sha512-FYz4wlXgkQwIPqhzC5TdNMLSE5+GS1IIDJZY/1ZiEPCT2S3COUVZeT5OW4BmW4r5LHLQuOosSwsvnroG9GR59Q==} + engines: {node: '>=0.4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + + is-async-function@2.1.1: + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} + engines: {node: '>= 0.4'} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.2: + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} + engines: {node: '>= 0.4'} + + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.1.1: + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} + engines: {node: '>= 0.4'} + + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + iso-url@1.2.1: + resolution: {integrity: sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==} + engines: {node: '>=12'} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: '*' + + iterator.prototype@1.1.5: + resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} + engines: {node: '>= 0.4'} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + libsodium-sumo@0.7.16: + resolution: {integrity: sha512-x6atrz2AdXCJg6G709x9W9TTJRI6/0NcL5dD0l5GGVqNE48UJmDsjO4RUWYTeyXXUpg+NXZ2SHECaZnFRYzwGA==} + + libsodium-wrappers-sumo@0.7.10: + resolution: {integrity: sha512-1noz8Mcl/LUzO/iSO/FJzoJyIaPwxl+/+E4CoTIXtsPiEEXQx2sxalmrVWxteLpynqgX0ASo28ChB9NEVRh0Pg==} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash@4.17.23: + resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + main-event@1.0.1: + resolution: {integrity: sha512-NWtdGrAca/69fm6DIVd8T9rtfDII4Q8NQbIbsKQq2VzS9eqOGYs8uaNQjcuaCq/d9H/o625aOTJX2Qoxzqw0Pw==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + min-document@2.19.2: + resolution: {integrity: sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@13.4.2: + resolution: {integrity: sha512-eh6eHCrRi1+POZ3dA+Dq1C6jhP1GNtr9CRINMb67OKzqW9I5DUuZM/3jLPlzhgpGeiNUlEGEbkCYChXMCc/8DQ==} + + nan@2.26.2: + resolution: {integrity: sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==} + + nanoassert@2.0.0: + resolution: {integrity: sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==} + + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + next@16.2.1: + resolution: {integrity: sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.36: + resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.values@1.2.1: + resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} + engines: {node: '>= 0.4'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + own-keys@1.0.1: + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} + engines: {node: '>= 0.4'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@9.1.0: + resolution: {integrity: sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==} + engines: {node: '>=20'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.3: + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + engines: {node: '>=12'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + progress-events@1.0.1: + resolution: {integrity: sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + peerDependencies: + react: ^19.2.4 + + react-hook-form@7.72.0: + resolution: {integrity: sha512-V4v6jubaf6JAurEaVnT9aUPKFbNtDgohj5CIgVGyPHvT9wRx5OZHVjz31GsxnPNI278XMu+ruFz+wGOscHaLKw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 || ^19 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + engines: {node: '>=0.10.0'} + + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + reflect.getprototypeof@1.0.10: + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} + engines: {node: '>= 0.4'} + + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + engines: {node: '>= 0.4'} + hasBin: true + + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-array-concat@1.1.3: + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-push-apply@1.0.0: + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} + engines: {node: '>= 0.4'} + + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + + sass@1.98.0: + resolution: {integrity: sha512-+4N/u9dZ4PrgzGgPlKnaaRQx64RO0JBKs9sDhQ2pLgN6JQZ25uPQZKQYaBJU48Kd5BxgXoJ4e09Dq7nMcOUW3A==} + engines: {node: '>=14.0.0'} + hasBin: true + + scalus@0.14.2: + resolution: {integrity: sha512-dobDMIUDUVhtxoX3ceGlaykKQGkph4HOE9hjkLsmwVgYf24fIik6YrZzVFrZSNCTvI2WN7hjEknehIrEJo1CMQ==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + serialize-error@8.1.0: + resolution: {integrity: sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==} + engines: {node: '>=10'} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-proto@1.0.0: + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} + engines: {node: '>= 0.4'} + + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.12: + resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.10: + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.9: + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} + engines: {node: '>= 0.4'} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} + engines: {node: '>=12.0.0'} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + ts-custom-error@3.3.1: + resolution: {integrity: sha512-5OX1tzOjxWEgsr/YEUWSuPrQ00deKLh6D7OTWcvNHm12/7QPyRh8SYpyWvA4IZv8H/+GQWQEh/kwo95Q9OVW1A==} + engines: {node: '>=14.0.0'} + + ts-log@2.2.7: + resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsx@4.21.0: + resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.3: + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.4: + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.7: + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} + engines: {node: '>= 0.4'} + + typescript-eslint@8.57.1: + resolution: {integrity: sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + uint8-varint@2.0.4: + resolution: {integrity: sha512-FwpTa7ZGA/f/EssWAb5/YV6pHgVF1fViKdW8cWaEarjB8t7NyofSWBdOTyFPaGuUG4gx3v1O3PQ8etsiOs3lcw==} + + uint8arraylist@2.4.8: + resolution: {integrity: sha512-vc1PlGOzglLF0eae1M8mLRTBivsvrGsdmJ5RbK3e+QRvRLOZfZhQROTwH/OfyF3+ZVUg9/8hE8bmKP2CvP9quQ==} + + uint8arrays@5.1.0: + resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} + + unbox-primitive@1.1.0: + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} + engines: {node: '>= 0.4'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici@5.29.0: + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} + engines: {node: '>=14.0'} + + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + utf8-codec@1.0.0: + resolution: {integrity: sha512-S/QSLezp3qvG4ld5PUfXiH7mCFxLKjSVZRFkB3DOjgwHuJPFDkInAXc/anf7BAbHt/D38ozDzL+QMZ6/7gsI6w==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + webextension-polyfill@0.8.0: + resolution: {integrity: sha512-a19+DzlT6Kp9/UI+mF9XQopeZ+n2ussjhxHJ4/pmIGge9ijCDz7Gn93mNnjpZAk95T4Tae8iHZ6sSf869txqiQ==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-builtin-type@1.2.1: + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + 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 + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zod-validation-error@4.0.2: + resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + +snapshots: + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.0': {} + + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@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.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + + '@biglup/is-cid@1.0.3': + dependencies: + '@multiformats/mafmt': 12.1.6 + '@multiformats/multiaddr': 12.5.1 + iso-url: 1.2.1 + multiformats: 13.4.2 + uint8arrays: 5.1.0 + + '@bufbuild/protobuf@1.10.1': {} + + '@cardano-ogmios/client@6.9.0': + dependencies: + '@cardano-ogmios/schema': 6.9.0 + '@cardanosolutions/json-bigint': 1.1.0 + '@types/json-bigint': 1.0.4 + bech32: 2.0.0 + cross-fetch: 3.2.0 + fastq: 1.20.1 + isomorphic-ws: 4.0.1(ws@7.5.10) + nanoid: 3.3.11 + ts-custom-error: 3.3.1 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@cardano-ogmios/schema@6.9.0': {} + + '@cardano-sdk/core@0.46.12(rxjs@7.8.2)': + dependencies: + '@biglup/is-cid': 1.0.3 + '@cardano-ogmios/client': 6.9.0 + '@cardano-ogmios/schema': 6.9.0 + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/util': 0.17.1 + '@foxglove/crc': 0.0.3 + '@scure/base': 1.2.6 + fraction.js: 4.0.1 + ip-address: 9.0.5 + lodash: 4.17.23 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + web-encoding: 1.1.5 + optionalDependencies: + rxjs: 7.8.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - utf-8-validate + + '@cardano-sdk/crypto@0.4.5': + dependencies: + '@cardano-sdk/util': 0.17.1 + blake2b: 2.1.4 + i: 0.3.7 + libsodium-wrappers-sumo: 0.7.10 + lodash: 4.17.23 + pbkdf2: 3.1.5 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + transitivePeerDependencies: + - react-native-b4a + + '@cardano-sdk/dapp-connector@0.13.26(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/util': 0.17.1 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + webextension-polyfill: 0.8.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@cardano-sdk/input-selection@0.14.28(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/key-management': 0.29.12 + '@cardano-sdk/util': 0.17.1 + bignumber.js: 9.3.1 + lodash: 4.17.23 + ts-custom-error: 3.3.1 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@cardano-sdk/key-management@0.29.12': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/dapp-connector': 0.13.26(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@emurgo/cardano-message-signing-nodejs': 1.1.0 + bip39: 3.1.0 + chacha: 2.1.0 + get-random-values: 2.1.0 + lodash: 4.17.23 + pbkdf2: 3.1.5 + rxjs: 7.8.2 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - bufferutil + - encoding + - react-native-b4a + - utf-8-validate + + '@cardano-sdk/util@0.17.1': + dependencies: + bech32: 2.0.0 + lodash: 4.17.23 + serialize-error: 8.1.0 + ts-custom-error: 3.3.1 + ts-log: 2.2.7 + + '@cardanosolutions/json-bigint@1.1.0': {} + + '@chainsafe/is-ip@2.1.0': {} + + '@chainsafe/netmask@2.0.0': + dependencies: + '@chainsafe/is-ip': 2.1.0 + + '@connectrpc/connect-node@1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1))': + dependencies: + '@bufbuild/protobuf': 1.10.1 + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + undici: 5.29.0 + + '@connectrpc/connect-web@1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1))': + dependencies: + '@bufbuild/protobuf': 1.10.1 + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + + '@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)': + dependencies: + '@bufbuild/protobuf': 1.10.1 + + '@dnsquery/dns-packet@6.1.1': + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + utf8-codec: 1.0.0 + + '@emnapi/core@1.9.1': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emurgo/cardano-message-signing-nodejs@1.1.0': {} + + '@esbuild/aix-ppc64@0.27.4': + optional: true + + '@esbuild/android-arm64@0.27.4': + optional: true + + '@esbuild/android-arm@0.27.4': + optional: true + + '@esbuild/android-x64@0.27.4': + optional: true + + '@esbuild/darwin-arm64@0.27.4': + optional: true + + '@esbuild/darwin-x64@0.27.4': + optional: true + + '@esbuild/freebsd-arm64@0.27.4': + optional: true + + '@esbuild/freebsd-x64@0.27.4': + optional: true + + '@esbuild/linux-arm64@0.27.4': + optional: true + + '@esbuild/linux-arm@0.27.4': + optional: true + + '@esbuild/linux-ia32@0.27.4': + optional: true + + '@esbuild/linux-loong64@0.27.4': + optional: true + + '@esbuild/linux-mips64el@0.27.4': + optional: true + + '@esbuild/linux-ppc64@0.27.4': + optional: true + + '@esbuild/linux-riscv64@0.27.4': + optional: true + + '@esbuild/linux-s390x@0.27.4': + optional: true + + '@esbuild/linux-x64@0.27.4': + optional: true + + '@esbuild/netbsd-arm64@0.27.4': + optional: true + + '@esbuild/netbsd-x64@0.27.4': + optional: true + + '@esbuild/openbsd-arm64@0.27.4': + optional: true + + '@esbuild/openbsd-x64@0.27.4': + optional: true + + '@esbuild/openharmony-arm64@0.27.4': + optional: true + + '@esbuild/sunos-x64@0.27.4': + optional: true + + '@esbuild/win32-arm64@0.27.4': + optional: true + + '@esbuild/win32-ia32@0.27.4': + optional: true + + '@esbuild/win32-x64@0.27.4': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + dependencies: + eslint: 9.39.4 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@fastify/busboy@2.1.1': {} + + '@foxglove/crc@0.0.3': {} + + '@harmoniclabs/bigint-utils@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/biguint@1.0.0': {} + + '@harmoniclabs/bitstream@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/bytestring@1.0.0': + dependencies: + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/cbor@1.6.0': + dependencies: + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/obj-utils': 1.0.0 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/crypto@0.2.5': + dependencies: + '@harmoniclabs/bitstream': 1.0.0 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/obj-utils@1.0.0': {} + + '@harmoniclabs/pair@1.0.0': {} + + '@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)': + dependencies: + '@harmoniclabs/biguint': 1.0.0 + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/crypto': 0.2.5 + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@harmoniclabs/uint8array-utils@1.0.4': {} + + '@harmoniclabs/uplc@1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0))': + dependencies: + '@harmoniclabs/bigint-utils': 1.0.0 + '@harmoniclabs/bytestring': 1.0.0 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/crypto': 0.2.5 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uint8array-utils': 1.0.4 + + '@hookform/resolvers@5.2.2(react-hook-form@7.72.0(react@19.2.4))': + dependencies: + '@standard-schema/utils': 0.3.0 + react-hook-form: 7.72.0(react@19.2.4) + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.1.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.9.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + + '@isaacs/ttlcache@1.4.1': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@libp2p/interface@3.1.0': + dependencies: + '@multiformats/dns': 1.0.13 + '@multiformats/multiaddr': 13.0.1 + main-event: 1.0.1 + multiformats: 13.4.2 + progress-events: 1.0.1 + uint8arraylist: 2.4.8 + + '@meshsdk/common@1.9.0-beta.100': + dependencies: + bech32: 2.0.0 + bip39: 3.1.0 + blake2b: 2.1.4 + blakejs: 1.2.1 + transitivePeerDependencies: + - react-native-b4a + + '@meshsdk/common@1.9.0-beta.101': + dependencies: + bech32: 2.0.0 + bip39: 3.1.0 + blake2b: 2.1.4 + blakejs: 1.2.1 + transitivePeerDependencies: + - react-native-b4a + + '@meshsdk/core-cst@1.9.0-beta.100(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uplc': 1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)) + '@meshsdk/common': 1.9.0-beta.100 + '@types/base32-encoding': 1.0.2 + base32-encoding: 1.0.0 + bech32: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.3 + hash.js: 1.1.7 + scalus: 0.14.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/core-cst@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/crypto': 0.4.5 + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@harmoniclabs/cbor': 1.6.0 + '@harmoniclabs/pair': 1.0.0 + '@harmoniclabs/plutus-data': 1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0) + '@harmoniclabs/uplc': 1.4.1(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)(@harmoniclabs/crypto@0.2.5)(@harmoniclabs/pair@1.0.0)(@harmoniclabs/plutus-data@1.2.6(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/cbor@1.6.0)) + '@meshsdk/common': 1.9.0-beta.101 + '@types/base32-encoding': 1.0.2 + base32-encoding: 1.0.0 + bech32: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.3 + hash.js: 1.1.7 + scalus: 0.14.2 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/core@1.9.0-beta.101(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/provider': 1.9.0-beta.100(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/transaction': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/wallet': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + transitivePeerDependencies: + - '@bufbuild/protobuf' + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - debug + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/provider@1.9.0-beta.100(@bufbuild/protobuf@1.10.1)(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.100 + '@meshsdk/core-cst': 1.9.0-beta.100(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@utxorpc/sdk': 0.6.8(@bufbuild/protobuf@1.10.1) + '@utxorpc/spec': 0.16.0 + axios: 1.13.6 + cbor: 10.0.12 + transitivePeerDependencies: + - '@bufbuild/protobuf' + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - debug + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/transaction@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@cardano-sdk/core': 0.46.12(rxjs@7.8.2) + '@cardano-sdk/input-selection': 0.14.28(rxjs@7.8.2) + '@cardano-sdk/util': 0.17.1 + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + json-bigint: 1.0.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@meshsdk/wallet@1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2)': + dependencies: + '@meshsdk/common': 1.9.0-beta.101 + '@meshsdk/core-cst': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@meshsdk/transaction': 1.9.0-beta.101(@harmoniclabs/bytestring@1.0.0)(@harmoniclabs/crypto@0.2.5)(rxjs@7.8.2) + '@simplewebauthn/browser': 13.3.0 + transitivePeerDependencies: + - '@dcspark/cardano-multiplatform-lib-asmjs' + - '@dcspark/cardano-multiplatform-lib-browser' + - '@dcspark/cardano-multiplatform-lib-nodejs' + - '@harmoniclabs/bytestring' + - '@harmoniclabs/crypto' + - bufferutil + - encoding + - react-native-b4a + - rxjs + - utf-8-validate + + '@multiformats/dns@1.0.13': + dependencies: + '@dnsquery/dns-packet': 6.1.1 + '@libp2p/interface': 3.1.0 + hashlru: 2.3.0 + p-queue: 9.1.0 + progress-events: 1.0.1 + uint8arrays: 5.1.0 + + '@multiformats/mafmt@12.1.6': + dependencies: + '@multiformats/multiaddr': 12.5.1 + + '@multiformats/multiaddr@12.5.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + '@chainsafe/netmask': 2.0.0 + '@multiformats/dns': 1.0.13 + abort-error: 1.0.1 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@multiformats/multiaddr@13.0.1': + dependencies: + '@chainsafe/is-ip': 2.1.0 + multiformats: 13.4.2 + uint8-varint: 2.0.4 + uint8arrays: 5.1.0 + + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@next/env@16.2.1': {} + + '@next/eslint-plugin-next@16.2.1': + dependencies: + fast-glob: 3.3.1 + + '@next/swc-darwin-arm64@16.2.1': + optional: true + + '@next/swc-darwin-x64@16.2.1': + optional: true + + '@next/swc-linux-arm64-gnu@16.2.1': + optional: true + + '@next/swc-linux-arm64-musl@16.2.1': + optional: true + + '@next/swc-linux-x64-gnu@16.2.1': + optional: true + + '@next/swc-linux-x64-musl@16.2.1': + optional: true + + '@next/swc-win32-arm64-msvc@16.2.1': + optional: true + + '@next/swc-win32-x64-msvc@16.2.1': + optional: true + + '@noble/hashes@1.8.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.3 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + + '@pythnetwork/pyth-lazer-sdk@6.2.1': + dependencies: + '@isaacs/ttlcache': 1.4.1 + buffer: 6.0.3 + isomorphic-ws: 5.0.0(ws@8.20.0) + ts-log: 2.2.7 + ws: 8.20.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@rtsao/scc@1.1.0': {} + + '@scure/base@1.2.6': {} + + '@simplewebauthn/browser@13.3.0': {} + + '@standard-schema/utils@0.3.0': {} + + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/base32-encoding@1.0.2': + dependencies: + '@types/node': 20.19.37 + + '@types/estree@1.0.8': {} + + '@types/json-bigint@1.0.4': {} + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/node@20.19.37': + dependencies: + undici-types: 6.21.0 + + '@types/react-dom@19.2.3(@types/react@19.2.14)': + dependencies: + '@types/react': 19.2.14 + + '@types/react@19.2.14': + dependencies: + csstype: 3.2.3 + + '@typescript-eslint/eslint-plugin@8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/type-utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 + eslint: 9.39.4 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.1 + debug: 4.4.3 + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.57.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.57.1': + dependencies: + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 + + '@typescript-eslint/tsconfig-utils@8.57.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.57.1': {} + + '@typescript-eslint/typescript-estree@8.57.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.57.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.1(typescript@5.9.3) + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/visitor-keys': 8.57.1 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.57.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.57.1 + '@typescript-eslint/types': 8.57.1 + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.57.1': + dependencies: + '@typescript-eslint/types': 8.57.1 + eslint-visitor-keys: 5.0.1 + + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + + '@utxorpc/sdk@0.6.8(@bufbuild/protobuf@1.10.1)': + dependencies: + '@connectrpc/connect': 1.4.0(@bufbuild/protobuf@1.10.1) + '@connectrpc/connect-node': 1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)) + '@connectrpc/connect-web': 1.4.0(@bufbuild/protobuf@1.10.1)(@connectrpc/connect@1.4.0(@bufbuild/protobuf@1.10.1)) + '@utxorpc/spec': 0.16.0 + buffer: 6.0.3 + transitivePeerDependencies: + - '@bufbuild/protobuf' + + '@utxorpc/spec@0.16.0': + dependencies: + '@bufbuild/protobuf': 1.10.1 + + '@zxing/text-encoding@0.9.0': + optional: true + + abort-error@1.0.1: {} + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + argparse@2.0.1: {} + + aria-query@5.3.2: {} + + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + + array-includes@3.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.findlastindex@1.2.6: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flat@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.flatmap@1.3.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-shim-unscopables: 1.1.0 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-shim-unscopables: 1.1.0 + + arraybuffer.prototype.slice@1.0.4: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 + + ast-types-flow@0.0.8: {} + + async-function@1.0.0: {} + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axe-core@4.11.1: {} + + axios@1.13.6: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + b4a@1.8.0: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base32-encoding@1.0.0: {} + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.10: {} + + bech32@2.0.0: {} + + bignumber.js@9.3.1: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bip39@3.1.0: + dependencies: + '@noble/hashes': 1.8.0 + + blake2b-wasm@2.4.0: + dependencies: + b4a: 1.8.0 + nanoassert: 2.0.0 + transitivePeerDependencies: + - react-native-b4a + + blake2b@2.1.4: + dependencies: + blake2b-wasm: 2.4.0 + nanoassert: 2.0.0 + transitivePeerDependencies: + - react-native-b4a + + blakejs@1.2.1: {} + + bn.js@5.2.3: {} + + brace-expansion@1.1.12: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.1: + dependencies: + baseline-browser-mapping: 2.10.10 + caniuse-lite: 1.0.30001780 + electron-to-chromium: 1.5.321 + node-releases: 2.0.36 + update-browserslist-db: 1.2.3(browserslist@4.28.1) + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + caniuse-lite@1.0.30001780: {} + + cbor@10.0.12: + dependencies: + nofilter: 3.1.0 + + chacha-native@2.0.3: + dependencies: + bindings: 1.5.0 + inherits: 2.0.4 + nan: 2.26.2 + optional: true + + chacha@2.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 1.1.14 + optionalDependencies: + chacha-native: 2.0.3 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + client-only@0.0.1: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + concat-map@0.0.1: {} + + convert-source-map@2.0.0: {} + + core-util-is@1.0.3: {} + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + + cross-fetch@3.2.0: + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.2.3: {} + + damerau-levenshtein@1.0.8: {} + + data-view-buffer@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + data-view-byte-offset@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-data-view: 1.0.2 + + debug@3.2.7: + dependencies: + ms: 2.1.3 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + deep-is@0.1.4: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: + optional: true + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + dom-walk@0.1.2: {} + + dotenv@17.3.1: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + electron-to-chromium@1.5.321: {} + + emoji-regex@9.2.2: {} + + es-abstract@1.24.1: + 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.20 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-iterator-helpers@1.3.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-set-tostringtag: 2.1.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.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 + internal-slot: 1.1.0 + iterator.prototype: 1.1.5 + math-intrinsics: 1.1.0 + safe-array-concat: 1.1.3 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.1.0: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.3.0: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.1.0 + is-symbol: 1.1.1 + + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-next@16.2.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3): + dependencies: + '@next/eslint-plugin-next': 16.2.1 + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4) + eslint-plugin-react: 7.37.5(eslint@9.39.4) + eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4) + globals: 16.4.0 + typescript-eslint: 8.57.1(eslint@9.39.4)(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-webpack + - eslint-plugin-import-x + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.11 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.4.3 + eslint: 9.39.4 + get-tsconfig: 4.13.6 + is-bun-module: 2.0.0 + stable-hash: 0.0.5 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4) + transitivePeerDependencies: + - supports-color + + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 9.39.4 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4))(eslint@9.39.4))(eslint@9.39.4) + hasown: 2.0.2 + is-core-module: 2.16.1 + is-glob: 4.0.3 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.1 + semver: 6.3.1 + string.prototype.trimend: 1.0.9 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.9 + array.prototype.flatmap: 1.3.3 + ast-types-flow: 0.0.8 + axe-core: 4.11.1 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 9.39.4 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.5 + object.fromentries: 2.0.8 + safe-regex-test: 1.1.0 + string.prototype.includes: 2.0.1 + + eslint-plugin-react-hooks@7.0.1(eslint@9.39.4): + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + eslint: 9.39.4 + hermes-parser: 0.25.1 + zod: 4.3.6 + zod-validation-error: 4.0.2(zod@4.3.6) + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@9.39.4): + dependencies: + array-includes: 3.1.9 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.3 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.3.1 + eslint: 9.39.4 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.5 + object.entries: 1.1.9 + object.fromentries: 2.0.8 + object.values: 1.2.1 + prop-types: 15.8.1 + resolve: 2.0.0-next.6 + semver: 6.3.1 + string.prototype.matchall: 4.0.12 + string.prototype.repeat: 1.0.0 + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + esutils@2.0.3: {} + + eventemitter3@5.0.4: {} + + fast-deep-equal@3.1.3: {} + + fast-glob@3.3.1: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.3): + optionalDependencies: + picomatch: 4.0.3 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-uri-to-path@1.0.0: + optional: true + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + fraction.js@4.0.1: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + function.prototype.name@1.1.8: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 + + functions-have-names@1.2.3: {} + + generator-function@2.0.1: {} + + gensync@1.0.0-beta.2: {} + + get-intrinsic@1.3.0: + 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 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-random-values@2.1.0: + dependencies: + global: 4.4.0 + + get-symbol-description@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + + get-tsconfig@4.13.6: + dependencies: + resolve-pkg-maps: 1.0.0 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + global@4.4.0: + dependencies: + min-document: 2.19.2 + process: 0.11.10 + + globals@14.0.0: {} + + globals@16.4.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.2.0 + + gopd@1.2.0: {} + + has-bigints@1.1.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hashlru@2.3.0: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + + i@0.3.7: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + immutable@5.1.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + inherits@2.0.4: {} + + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + is-async-function@2.1.1: + dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-bun-module@2.0.0: + dependencies: + semver: 7.7.4 + + is-callable@1.2.7: {} + + is-core-module@2.16.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.2: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 + + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + + is-weakmap@2.0.2: {} + + is-weakref@1.1.1: + dependencies: + call-bound: 1.0.4 + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + iso-url@1.2.1: {} + + isomorphic-ws@4.0.1(ws@7.5.10): + dependencies: + ws: 7.5.10 + + isomorphic-ws@5.0.0(ws@8.20.0): + dependencies: + ws: 8.20.0 + + iterator.prototype@1.1.5: + dependencies: + define-data-property: 1.1.4 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + has-symbols: 1.1.0 + set-function-name: 2.0.2 + + js-tokens@4.0.0: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + jsbn@1.1.0: {} + + jsesc@3.1.0: {} + + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.3.1 + + json-buffer@3.0.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.9 + array.prototype.flat: 1.3.3 + object.assign: 4.1.7 + object.values: 1.2.1 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + libsodium-sumo@0.7.16: {} + + libsodium-wrappers-sumo@0.7.10: + dependencies: + libsodium-sumo: 0.7.16 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash@4.17.23: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + main-event@1.0.1: {} + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + min-document@2.19.2: + dependencies: + dom-walk: 0.1.2 + + minimalistic-assert@1.0.1: {} + + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.12 + + minimist@1.2.8: {} + + ms@2.1.3: {} + + multiformats@13.4.2: {} + + nan@2.26.2: + optional: true + + nanoassert@2.0.0: {} + + nanoid@3.3.11: {} + + napi-postinstall@0.3.4: {} + + natural-compare@1.4.0: {} + + next@16.2.1(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.98.0): + dependencies: + '@next/env': 16.2.1 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.10.10 + caniuse-lite: 1.0.30001780 + postcss: 8.4.31 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) + optionalDependencies: + '@next/swc-darwin-arm64': 16.2.1 + '@next/swc-darwin-x64': 16.2.1 + '@next/swc-linux-arm64-gnu': 16.2.1 + '@next/swc-linux-arm64-musl': 16.2.1 + '@next/swc-linux-x64-gnu': 16.2.1 + '@next/swc-linux-x64-musl': 16.2.1 + '@next/swc-win32-arm64-msvc': 16.2.1 + '@next/swc-win32-x64-msvc': 16.2.1 + sass: 1.98.0 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + + node-addon-api@7.1.1: + optional: true + + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.36: {} + + nofilter@3.1.0: {} + + object-assign@4.1.1: {} + + object-inspect@1.13.4: {} + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + object.values@1.2.1: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@9.1.0: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + + p-timeout@7.0.1: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.3: {} + + possible-typed-array-names@1.1.0: {} + + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prelude-ls@1.2.1: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + progress-events@1.0.1: {} + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + queue-microtask@1.2.3: {} + + react-dom@19.2.4(react@19.2.4): + dependencies: + react: 19.2.4 + scheduler: 0.27.0 + + react-hook-form@7.72.0(react@19.2.4): + dependencies: + react: 19.2.4 + + react-is@16.13.1: {} + + react@19.2.4: {} + + readable-stream@1.1.14: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readdirp@4.1.2: {} + + reflect.getprototypeof@1.0.10: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 + + regexp.prototype.flags@1.5.4: + 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 + + resolve-from@4.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.11: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.6: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.1 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-array-concat@1.1.3: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-push-apply@1.0.0: + dependencies: + es-errors: 1.3.0 + isarray: 2.0.5 + + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + + sass@1.98.0: + dependencies: + chokidar: 4.0.3 + immutable: 5.1.5 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + + scalus@0.14.2: {} + + scheduler@0.27.0: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + serialize-error@8.1.0: + dependencies: + type-fest: 0.20.2 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + + sha.js@2.4.12: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + sharp@0.34.5: + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.7.4 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + source-map-js@1.2.1: {} + + sprintf-js@1.1.3: {} + + stable-hash@0.0.5: {} + + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.matchall@4.0.12: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-symbols: 1.1.0 + internal-slot: 1.1.0 + regexp.prototype.flags: 1.5.4 + set-function-name: 2.0.2 + side-channel: 1.1.0 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.24.1 + + string.prototype.trim@1.2.10: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 + define-properties: 1.2.1 + es-abstract: 1.24.1 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 + + string.prototype.trimend@1.0.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + + string_decoder@0.10.31: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + strip-bom@3.0.0: {} + + strip-json-comments@3.1.1: {} + + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): + dependencies: + client-only: 0.0.1 + react: 19.2.4 + optionalDependencies: + '@babel/core': 7.29.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + ts-custom-error@3.3.1: {} + + ts-log@2.2.7: {} + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@2.8.1: {} + + tsx@4.21.0: + dependencies: + esbuild: 0.27.4 + get-tsconfig: 4.13.6 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.20.2: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typed-array-byte-length@1.0.3: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + + typed-array-byte-offset@1.0.4: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 + + typescript-eslint@8.57.1(eslint@9.39.4)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.57.1(@typescript-eslint/parser@8.57.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.1(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + uint8-varint@2.0.4: + dependencies: + uint8arraylist: 2.4.8 + uint8arrays: 5.1.0 + + uint8arraylist@2.4.8: + dependencies: + uint8arrays: 5.1.0 + + uint8arrays@5.1.0: + dependencies: + multiformats: 13.4.2 + + unbox-primitive@1.1.0: + dependencies: + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 + + undici-types@6.21.0: {} + + undici@5.29.0: + dependencies: + '@fastify/busboy': 2.1.1 + + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + 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 + + update-browserslist-db@1.2.3(browserslist@4.28.1): + dependencies: + browserslist: 4.28.1 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + utf8-codec@1.0.0: {} + + util-deprecate@1.0.2: {} + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.20 + + web-encoding@1.1.5: + dependencies: + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + webextension-polyfill@0.8.0: {} + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-builtin-type@1.2.1: + dependencies: + call-bound: 1.0.4 + function.prototype.name: 1.1.8 + has-tostringtag: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 + isarray: 2.0.5 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.20 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.20: + 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 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + word-wrap@1.2.5: {} + + ws@7.5.10: {} + + ws@8.20.0: {} + + yallist@3.1.1: {} + + yocto-queue@0.1.0: {} + + zod-validation-error@4.0.2(zod@4.3.6): + dependencies: + zod: 4.3.6 + + zod@4.3.6: {} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml new file mode 100644 index 00000000..77457084 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +allowBuilds: + '@parcel/watcher': false + chacha-native: false + sharp: false + unrs-resolver: false diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png new file mode 100644 index 00000000..2196bbca Binary files /dev/null and b/lazer/cardano/safequote-veltrix/safequote-app-website/public/apple-touch-icon.png differ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png new file mode 100644 index 00000000..d1abc10e Binary files /dev/null and b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon-96x96.png differ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.ico b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.ico new file mode 100644 index 00000000..9e3ceb6e Binary files /dev/null and b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.ico differ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg new file mode 100644 index 00000000..4496fff5 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest b/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest new file mode 100644 index 00000000..6d18a21b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/public/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "SafeQuote", + "short_name": "SafeQuote", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#0B132B", + "background_color": "#0B132B", + "display": "standalone" +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png new file mode 100644 index 00000000..12148639 Binary files /dev/null and b/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-192x192.png differ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-512x512.png b/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-512x512.png new file mode 100644 index 00000000..16c160c0 Binary files /dev/null and b/lazer/cardano/safequote-veltrix/safequote-app-website/public/web-app-manifest-512x512.png differ diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs new file mode 100644 index 00000000..c1b301ee --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/resolve-invoice-nft-policy-id.mjs @@ -0,0 +1,26 @@ +import fs from "fs"; +import path from "path"; +import { resolveScriptHash } from "@meshsdk/core"; + +const blueprintPath = path.resolve( + process.cwd(), + "..", + "safequote-app-aiken", + "plutus.json", +); +const blueprint = JSON.parse(fs.readFileSync(blueprintPath, "utf8")); + +const validator = blueprint.validators.find( + (item) => + item.title.endsWith(".mint") && item.title.includes("mint_invoice_nft"), +); + +if (!validator) { + const availableTitles = blueprint.validators.map((item) => item.title); + throw new Error( + `Mint validator was not found in plutus.json. Available titles: ${availableTitles.join(", ")}`, + ); +} + +const policyId = resolveScriptHash(validator.compiledCode, "V3"); +console.log(policyId); diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts new file mode 100644 index 00000000..1ab77327 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/seed.ts @@ -0,0 +1,21 @@ +type SeedStatus = "created" | "updated" | "unchanged" | "skipped"; + +function logSeed(entity: string, status: SeedStatus, detail: string) { + console.log( + JSON.stringify({ + scope: "seed", + entity, + status, + detail, + timestamp: new Date().toISOString(), + }), + ); +} + +logSeed("seller-demo", "created", "demo seller initialized"); +logSeed("user-demo", "created", "demo user initialized"); +logSeed( + "invoice-categories", + "unchanged", + "default categories already present", +); diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts new file mode 100644 index 00000000..639dcdc6 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/scripts/test-pyth.ts @@ -0,0 +1,43 @@ +import { config as loadEnv } from "dotenv"; +import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk"; + +loadEnv({ path: ".env.local" }); + +async function main() { + const token = process.env.PYTH_ACCESS_TOKEN; + const feedId = Number(process.env.PYTH_LAZER_ADA_USD_FEED_ID ?? "16"); + + if (!token) { + throw new Error("Missing PYTH_ACCESS_TOKEN in .env.local"); + } + + const client = await PythLazerClient.create({ + token, + webSocketPoolConfig: { + urls: [ + "wss://pyth-lazer-0.dourolabs.app/v1/stream", + "wss://pyth-lazer-1.dourolabs.app/v1/stream", + "wss://pyth-lazer-2.dourolabs.app/v1/stream", + ], + }, + }); + + try { + const latestPrice = await client.getLatestPrice({ + channel: "fixed_rate@200ms", + formats: ["solana"], + jsonBinaryEncoding: "hex", + priceFeedIds: [feedId], + properties: ["price", "exponent"], + }); + + console.log(JSON.stringify(latestPrice, null, 2)); + } finally { + client.shutdown(); + } +} + +main().catch((error) => { + console.error(error); + process.exit(1); +}); \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts new file mode 100644 index 00000000..58dc5934 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/login/route.ts @@ -0,0 +1,69 @@ +import { NextResponse } from "next/server"; +import type { SessionUser } from "@/types/auth"; + +function requireEnv(name: string) { + const value = process.env[name]; + + if (!value) { + throw new Error(`Missing environment variable: ${name}`); + } + + return value; +} + +const USERS = [ + { + id: "seller-demo", + role: "seller", + email: requireEnv("DEMO_SELLER_EMAIL"), + password: requireEnv("DEMO_SELLER_PASSWORD"), + displayName: "Demo Seller", + }, + { + id: "user-demo", + role: "user", + email: requireEnv("DEMO_USER_EMAIL"), + password: requireEnv("DEMO_USER_PASSWORD"), + displayName: "Demo User", + }, +] as const; + +export async function POST(request: Request) { + const body = (await request.json()) as { + email?: string; + password?: string; + }; + + const user = USERS.find( + (item) => item.email === body.email && item.password === body.password, + ); + + if (!user) { + return NextResponse.json( + { message: "Invalid credentials" }, + { status: 401 }, + ); + } + + const response = NextResponse.json( + { + accessToken: `demo-token-${user.id}`, + user: { + id: user.id, + role: user.role, + email: user.email, + displayName: user.displayName, + } satisfies SessionUser, + }, + { status: 200 }, + ); + + response.cookies.set("safequote_session", `demo-token-${user.id}`, { + httpOnly: true, + sameSite: "lax", + secure: false, + path: "/", + }); + + return response; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts new file mode 100644 index 00000000..6656c52c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/auth/wallet/route.ts @@ -0,0 +1,44 @@ +import { NextResponse } from "next/server"; + +export async function POST(request: Request) { + const body = (await request.json()) as { + walletName?: string; + address?: string; + }; + + if (!body.walletName || !body.address) { + return NextResponse.json( + { message: "Wallet name and address are required" }, + { status: 400 }, + ); + } + + const user = { + id: `wallet-${body.walletName.toLowerCase()}`, + walletName: body.walletName, + walletAddress: body.address, + }; + + const response = NextResponse.json({ user }, { status: 200 }); + response.cookies.set("safequote_session", body.address, { + httpOnly: false, + sameSite: "lax", + secure: false, + path: "/", + }); + + return response; +} + +export async function DELETE() { + const response = NextResponse.json({ ok: true }, { status: 200 }); + response.cookies.set("safequote_session", "", { + httpOnly: false, + sameSite: "lax", + secure: false, + path: "/", + maxAge: 0, + }); + + return response; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts new file mode 100644 index 00000000..e673f7f6 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/[id]/route.ts @@ -0,0 +1,33 @@ +import { NextResponse } from "next/server"; +import { findInvoiceById } from "@/features/invoices/lib/invoice-store"; + +export async function PATCH( + request: Request, + context: { params: Promise<{ id: string }> }, +) { + const { id } = await context.params; + const invoice = findInvoiceById(id); + + if (!invoice) { + return NextResponse.json({ message: "Invoice not found" }, { status: 404 }); + } + + const body = (await request.json()) as { + buyerAddress?: string; + adaQuoteSnapshot?: number; + feedId?: number; + txHash?: string; + status?: "open" | "paid" | "expired"; + }; + + Object.assign(invoice, { + buyerAddress: body.buyerAddress ?? invoice.buyerAddress, + adaQuoteSnapshot: body.adaQuoteSnapshot ?? invoice.adaQuoteSnapshot, + feedId: body.feedId ?? invoice.feedId, + txHash: body.txHash ?? invoice.txHash, + status: body.status ?? invoice.status, + updatedAt: new Date().toISOString(), + }); + + return NextResponse.json({ item: invoice }, { status: 200 }); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts new file mode 100644 index 00000000..b61b738b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/invoices/route.ts @@ -0,0 +1,46 @@ +import { NextResponse } from "next/server"; +import { invoices } from "@/features/invoices/lib/invoice-store"; +import type { Invoice } from "@/types/invoice"; + +export async function GET() { + return NextResponse.json({ items: invoices }, { status: 200 }); +} + +export async function POST(request: Request) { + const body = (await request.json()) as { + sellerAddress: string; + clientName: string; + concept: string; + amountUsd: number; + pinHash: string; + invoiceNftPolicyId: string; + invoiceNftName: string; + invoiceScriptAddress?: string; + lockTxHash?: string; + lockTxIndex?: number; + deadline: string; + }; + + const now = new Date().toISOString(); + + const invoice: Invoice = { + id: crypto.randomUUID(), + sellerAddress: body.sellerAddress, + clientName: body.clientName, + concept: body.concept, + amountUsd: Number(body.amountUsd), + pinHash: body.pinHash, + invoiceNftPolicyId: body.invoiceNftPolicyId, + invoiceNftName: body.invoiceNftName, + invoiceScriptAddress: body.invoiceScriptAddress, + lockTxHash: body.lockTxHash, + lockTxIndex: body.lockTxIndex, + status: "open", + deadline: body.deadline, + createdAt: now, + updatedAt: now, + }; + + invoices.unshift(invoice); + return NextResponse.json({ item: invoice }, { status: 201 }); +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts new file mode 100644 index 00000000..74b1a92b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/oracle/ada-usd/route.ts @@ -0,0 +1,61 @@ +import { NextResponse } from "next/server"; +import { PythLazerClient } from "@pythnetwork/pyth-lazer-sdk"; + +export async function POST() { + const token = process.env.PYTH_ACCESS_TOKEN; + const feedId = Number(process.env.PYTH_LAZER_ADA_USD_FEED_ID ?? "16"); + + if (!token) { + return NextResponse.json( + { message: "Missing PYTH_ACCESS_TOKEN configuration" }, + { status: 500 }, + ); + } + + const client = await PythLazerClient.create({ + token, + webSocketPoolConfig: { + urls: [ + "wss://pyth-lazer-0.dourolabs.app/v1/stream", + "wss://pyth-lazer-1.dourolabs.app/v1/stream", + "wss://pyth-lazer-2.dourolabs.app/v1/stream", + ], + }, + }); + + try { + const update = await client.getLatestPrice({ + channel: "fixed_rate@200ms", + formats: ["solana"], + jsonBinaryEncoding: "hex", + priceFeedIds: [feedId], + properties: ["price", "exponent"], + }); + + const parsed = update.parsed; + const priceFeed = parsed?.priceFeeds?.[0]; + const binary = update.solana?.data; + + if (!parsed || !priceFeed || !binary) { + return NextResponse.json( + { message: "Incomplete response from Pyth Lazer" }, + { status: 502 }, + ); + } + + return NextResponse.json( + { + item: { + feedId: priceFeed.priceFeedId, + price: priceFeed.price, + exponent: priceFeed.exponent, + timestampUs: parsed.timestampUs, + binary, + }, + }, + { status: 200 }, + ); + } finally { + client.shutdown(); + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts new file mode 100644 index 00000000..a042a38c --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/api/pyth/context/route.ts @@ -0,0 +1,27 @@ +import { NextResponse } from "next/server"; + +export async function GET() { + const stateTxHash = process.env.NEXT_PUBLIC_PYTH_STATE_TX_HASH; + const stateOutputIndex = Number( + process.env.NEXT_PUBLIC_PYTH_STATE_OUTPUT_INDEX ?? "-1", + ); + const withdrawScriptHash = process.env.NEXT_PUBLIC_PYTH_WITHDRAW_SCRIPT_HASH; + + if (!stateTxHash || stateOutputIndex < 0 || !withdrawScriptHash) { + return NextResponse.json( + { message: "Missing Pyth context configuration" }, + { status: 500 }, + ); + } + + return NextResponse.json( + { + item: { + stateTxHash, + stateOutputIndex, + withdrawScriptHash, + }, + }, + { status: 200 }, + ); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss new file mode 100644 index 00000000..1616edd5 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/globals.scss @@ -0,0 +1,27 @@ +html, +body { + margin: 0; + min-height: 100%; + font-family: "Segoe UI", sans-serif; + background: #081120; + color: #f2f6fb; +} + +main { + display: grid; + gap: 24px; +} + +section { + padding: 20px; + border: 1px solid rgba(255, 255, 255, 0.08); + border-radius: 16px; + background: rgba(255, 255, 255, 0.03); +} + +input, +select, +button { + margin: 6px 6px 6px 0; + padding: 10px 12px; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx new file mode 100644 index 00000000..f5c2ad6a --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/layout.tsx @@ -0,0 +1,57 @@ +import type { Metadata } from "next"; +import "./globals.scss"; + +export const metadata: Metadata = { + metadataBase: new URL("https://safequote.local"), + title: { + default: "SafeQuote", + template: "%s | SafeQuote", + }, + description: + "USD invoicing with ADA payments and on-chain price verification powered by Pyth Network.", + applicationName: "SafeQuote", + keywords: ["Cardano", "Aiken", "Pyth", "ADA", "Invoices", "MeshJS"], + authors: [{ name: "Veltrix Team" }], + creator: "Veltrix Team", + publisher: "Veltrix Team", + appleWebApp: { + title: "SafeQuote", + }, + manifest: "/site.webmanifest", + icons: { + icon: [ + { url: "/favicon.ico" }, + { url: "/favicon.svg", type: "image/svg+xml" }, + { url: "/favicon-96x96.png", sizes: "96x96", type: "image/png" }, + ], + apple: [{ url: "/apple-touch-icon.png" }], + }, + openGraph: { + title: "SafeQuote", + description: + "Get paid in ADA while invoicing in USD with on-chain verified pricing from Pyth.", + url: "https://safequote.local", + siteName: "SafeQuote", + locale: "en_US", + type: "website", + }, + twitter: { + card: "summary_large_image", + title: "SafeQuote", + description: + "Get paid in ADA while invoicing in USD with on-chain verified pricing from Pyth.", + }, +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + {children} + + ); +} + diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss new file mode 100644 index 00000000..b2b89198 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.module.scss @@ -0,0 +1,3 @@ +.page { + min-height: 100vh; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx new file mode 100644 index 00000000..fa9bc811 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/app/page.tsx @@ -0,0 +1,5 @@ +import { SafeQuoteApp } from "@/features/ui/safequote-app"; + +export default function Home() { + return ; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json b/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json new file mode 100644 index 00000000..11f42ad9 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/contracts/plutus.json @@ -0,0 +1,181 @@ +{ + "preamble": { + "title": "esis8/safequote_app_aiken", + "description": "SafeQuote Aiken contracts", + "version": "0.0.0", + "plutusVersion": "v3", + "compiler": { + "name": "Aiken", + "version": "v1.1.19+e525483" + }, + "license": "Apache-2.0" + }, + "validators": [ + { + "title": "invoice.invoice.spend", + "datum": { + "title": "datum", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceDatum" + } + }, + "redeemer": { + "title": "redeemer", + "schema": { + "$ref": "#/definitions/invoice~1InvoiceRedeemer" + } + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "invoice.invoice.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "59181701010029800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400530080024888966002600460106ea800e2653001300d00198069807000cdc3a40009112cc004c004c030dd500444c8c8cc8966002602a007159800980298081baa0068cc004c050c044dd50034c044dd500648c054c058c0580064602a602c00323015301630163016301630160019180a980b180b180b000cdc024003374a900024444444464b30013371e6e50dd7180e980f0041bae3004301a375401319800918019980e98019980e9ba90014bd701980ea6103d87a80004bd70488c8cc00400400c896600200314a115980098019810800c528c4cc008008c08800501c203e91119199119801001000912cc00400600713233225980099b910070028acc004cdc78038014400600c810a26600a00a604e0088108dd718100009bad30210013023001408464646600200200c44b3001001801c4c8cc896600266e4402400a2b30013371e0120051001803204489980280298140022044375c60420026eacc088004c0900050220a5eb7bdb180520004889660026466446600a6eb0c034c080dd500c12cc004cdd7981218109baa001003899b8900298009bab300d30213754003488100a44100401514a080f8c010004cc88cdc1980499b803370466e08dd6980618101baa00f4820225ea60020054805266e052000375a6046604800e80100040048896600266e2000520008a4001159800980a800c520028992cc004c058cdc300124009198008024c00400e66e0c009200440111300198008024c00400e66e0cc02c009200440108100dc1001203e407c66e08dd69810802a4190026eb8c080c074dd500644ca60026008003375c6012603c6ea80366eb8c084c088c088c088c088c078dd5006a4446600c6eb0c038c084dd500c92cc004cdd7981298111baa0010048980dcc004dd5980718111baa001801400d006452820401bae302000b8a50406c8a5040613001370e90024dc4a400922325980099b8f48900375c603e60400031301f0018b20343002001911919800800801911980180098010014dd71803180c9baa008488888c8c8c966002604a00313259800980b18109baa001899192cc004c060c08cdd5000c4c966002603260486ea8006264b3001301a30253754003133028302930263754004660506052604c6ea80052f5c11640906020604a6ea800e2c8118c09cc090dd5000c59022180798119baa00130253022375400316408064660020026eb0c03cc088dd51812801112cc004006298103d87a80008992cc004cdc39bad302730243754002901044c030cc0980052f5c113300300330280024088604c00281222c8110c966002602a60406ea8006264b300130163021375400313233007001225980080144c8cc004004010896600200314bd7044cc0a660026e2520009b8c480126e0120039b89480226e3120009b8c480226e01200748888888cc88cc0548c8d6600266e3cdd7181a800a4410475d3c793008cc004888c8cc00cdd6981c8009bae3039303a00130030019b89480426e3120109b804803e600e90082444446600a464660766ea0cde5250375c6078002660766078607a00297ae05980098029b8d00189981d1ba930020013303a37526600860066e340040052f5c11640d84646600e4660786ea0cdc7000a4000660786ea4cc008c08cdc6800800a5eb808cc0208cc0f4dd419b8e00148000cc0f4dd49980198121b8d0010014bd70111919198201813198201ba800733040375000a66080608200297ae033040304130420014bd7018008012cc004c05400a2653001001a5eb820068008889660026066003123233043374e002660866ea40092f5c065300100180252f5c080088896600200510018cc00400e608e005330453046002001400c8222246530010059982198220008024c0a800e6eb8c110c1140050054c004c8cc10cdd419bca4a06eb8c110004cc10cc110c1140052f5c0b30013016371a00313304237526022002660846ea4cc050c04cdc6800800a5eb822c81f24466088004660886ea40052f5c1370e90034dc3a4010911119191919803194c0040066eb0c12c00a60606609460960106609498103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80003304a4c103d87a80004bd70200222259800801440063300100398270014c8c966002608000313230353304f30500013304f30353304f3050304d375400697ae030513051001304c37540071598009822800c4c8c8c0d8cc140c144008cc140c144004cc140c0d8cc140c144c138dd500225eb80c148c148004c144004c130dd5001c566002606600313232323037330513052003330513052002330513052001330513037330513052304f375400a97ae03053305300130520013051001304c37540071598009805000c4c8c8c8c8c0e0cc148c14c010cc148c14c00ccc148c14c008cc148c14c004cc148c0e0cc148c14cc140dd500325eb80c150c150004c14c004c148004c144004c130dd5001c56600260120031323232323230393305330540053305330540043305330540033305330540023305330540013305330393305330543051375400e97ae0305530550013054001305300130520013051001304c375400715980099b874802800626464646464646074660a860aa00c660a860aa00a660a860aa008660a860aa006660a860aa004660a860aa002660a86074660a860aa60a46ea80212f5c060ac60ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e9006000c4c8c8c8c8c8c8c8c0eccc154c15801ccc154c158018cc154c158014cc154c158010cc154c15800ccc154c158008cc154c158004cc154c0eccc154c158c14cdd5004a5eb80c15cc15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d200e00189919191919191919181e1982b182b8041982b182b8039982b182b8031982b182b8029982b182b8021982b182b8019982b182b8011982b182b8009982b181e1982b182b982a1baa00a4bd70182c182c000982b800982b000982a800982a00098298009829000982880098261baa0038acc004cdc3a40200031323232323232323232303d33057305800933057305800833057305800733057305800633057305800533057305800433057305800333057305800233057305800133057303d3305730583055375401697ae03059305900130580013057001305600130550013054001305300130520013051001304c375400715980099b8748048006264646464646464646464607c660b060b2014660b060b2012660b060b2010660b060b200e660b060b200c660b060b200a660b060b2008660b060b2006660b060b2004660b060b2002660b0607c660b060b260ac6ea80312f5c060b460b400260b200260b000260ae00260ac00260aa00260a800260a600260a400260a200260986ea800e2b30013370e900a000c4c8c8c8c8c8c8c8c8c8c8c8c0fccc164c16802ccc164c168028cc164c168024cc164c168020cc164c16801ccc164c168018cc164c168014cc164c168010cc164c16800ccc164c168008cc164c168004cc164c0fccc164c168c15cdd5006a5eb80c16cc16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001c56600266e1d2016001899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d18201982d182d982c1baa00e4bd70182e182e000982d800982d000982c800982c000982b800982b000982a800982a00098298009829000982880098261baa003899191919191919191919191918201982d182d8061982d182d8059982d182d8051982d182d8049982d182d8041982d182d8039982d182d8031982d182d8029982d182d8021982d182d8019982d182d8011982d182d8009982d182d982e0009982d18201982d182d982c1baa00e4bd7025eb80c16c004c168004c164004c160004c15c004c158004c154004c150004c14c004c148004c144004c130dd5001a0944128825104a20944128825104a20944128825104a18251baa001304d002400c8258dd718251825800991acc004c08000a2653001001a5eb82006800888966002607c00312323304e374e0026609c6ea40092f5c065300100180252f5c080088896600200510018cc00400e60a4005330503051002001400c827a246530010059982718278008024c0d400e6eb8c13cc1400050051802800a0908b208a375c60946096006530012232598009800a40211598009800a4001148002266e3922010801020408102040800000241211598009800a408113370490400219801801980a80144cdc124101010100406600600666e00009203f41208240dc4000c888c8cc134c00cdd698270009982698271827800a5eb80c00c006660926ea0cdc7000a4000660926ea4cc03cc0c0dc6800800a5eb8122232329800919802919198289ba833794940dd718290009982898291829800a5eb816600260366e340062660a06ea4c060004cc140dd49980d180c9b8d0010014bd7045904c1191801acc004c10c006298103d87a80008981b998289ba80014bd70209a30030019bad304f003911191acc006600260886eb4c14c00694294504e44cc02000c8c014c0e4cc14cdd4000a5eb822601e600898103d87a800041386eb8c14cc150004cc144dd419b8e00148000cc144dd49980b981c1b8d0010014bd7024446b30013043002898019181c19829000a5eb822b3001304800289801919ba548008cc1480052f5c1159800981b00144c00c8cdd2a4008660a400297ae08acc004c03400a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e95200633052375000297ae08acc004c03000a26600e464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800981b1b8d0018998291ba9302200133052375266050604e6e340040052f5c1164138466e952008330523750b3001337100029040400244006266e04004c0192020413897ae08acc004cdc3a40140051300323374a900519829000a5eb822b30013370e900600144cc0048cdd2a4018660a400297ae0232330533750600c6eb4c150004cc14cc150c1540052f5c064660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874803800a266002466e95200e330520014bd70119198299ba833794940dd7182a00099829982a182a800a5eb8166002603a6e340062660a46ea4c068004cc148dd49980e180d9b8d0010014bd7045904e456600266e1d2010002899800919ba548040cc1480052f5c0464660a66ea0cde5250375c60a8002660a660a860aa00297ae059800980e9b8d0018998291ba9301a0013305237526603860366e340040052f5c116413915980099b874804800a246464660a866e9520123305430550014bd701982a182a982b000a5eb80c004008cc0208c8cc150dd419bca4a06eb8c154004cc150c154c1580052f5c0b30013037371a00313305337526046002660a66ea4cc0a4c0a0dc6800800a5eb822c8278966002608a00314c103d87980008acc004c128006298103d87a80008acc004c0e0006298103d87b80008acc004c03c006298103d87c80008acc004c038006298103d87d80008b209e413c827904f209e8acc004cdc3a40280051300323374a900a19829000a5eb822b30013370e900b00144c00c8cdd2a402c660a400297ae08acc004cdc3a403000513300123374a900c19829000a5eb808c8cc14cdd419bca4a06eb8c150004cc14cc150c1540052f5c0b3001301d371a00313305237526034002660a46ea4cc070c06cdc6800800a5eb822c82722c826904d209a4134826904d209a4134826904d209a41348268dd718291829803096600266e2000520808080808080808080028800c4cdc0800980124100028250c00c00c6eb4c120004c8cc11cdd419b8e00148000cc11cdd49980698171b8d0010014bd701bae30473048004207a8b20743718900122c8180dd7181a981b000acc004c01cdc6800c4cc0ccdd49801000998199ba9330053004371a00200297ae08b205e375c603a60606ea8cc0548c8d6600266e3cdd7181a800a44104b9011a82008919191919191919911981e98119981e981f0039981e9ba90013303d303e0024bd701981e981f181f80125eb80d660026024003125980099b89002371a00313303c37526601e004002660786ea66002005337026e3400400a002b8c25eb822c81c22c81b8dd7181e181e8011bae303c004375a607600264660746ea0cde5250375c6076002660746076607800297ae059800980e9b8d00189981c9ba930090013303937526601e601c6e340040052f5c11640d46eb8c0e4c0e8004d6600294624b30013371290201b8d00189981c1ba93300b48100004cc0e0dd4cc005204099b80371a002901fc0057184bd704590344590331bae30383039001300100259800a51892cc004cdc4a4100026e3400626606c6ea4cc0252080010013303637533001482000666e00dc6800a40ff0015c612f5c11640c91640c51640c06eb8c0d4c0d800566002600e6e340062660666ea4c008004cc0ccdd49980298021b8d0010014bd7045902f1bae303300a300348010c00d2008198010011815800a050899180118150019bae302800240986eb0c094c088dd5000c5902019199119801001000912cc004006298103d87a80008992cc004cdd78021812000c4c034cc09cc0940052f5c11330030033029002408c604e0028128dd5981298131813181318131813181318131813181318111baa01a3374a90021981199ba548008cc08cc02cc084dd5181218109baa0014bd7025eb822c80f8c8cc004004dd6180698109baa0192259800800c530103d87a80008992cc006600266ebc00530103d87a8000a50a514085100189980180198138012042325980099912cc00400a294226530013259800980d98131baa00189bad3027302a37566054604e6ea800629000204a30290019baf3029302a0019bab003488966002003159800980100344cc01400d20008a50409d1325980099baf30290014c010140008acc004cc018010dd6981518169bab302a001898019ba6302e0028a5040a11598009980300224001130030078a5040a08140c0b000502a0ca600200337566024604c6ea8c048c098dd5002488cc0a8008cc0a8dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044ca60026eb8c0a00066eacc0a4006605a0069112cc004cdc8a441000038acc004cdc7a44100003899802980a198171ba60024bd70000c4cc015300103d87a800000640a919800803c006446600e0046606066ec0dd48029ba6004001401c81506056004814a29422942294102a1ba633025337606ea4018dd31981299bb04c10b4a50797468205374617465004c010101004bd6f7b63025eb7bdb1808928c566002603860446ea8c098c08cdd5181318119baa300f3023375400313259800980598119baa0018992cc004c064c090dd5000c4c8c8c8c8cc8966002605e00713259800981018159baa0018991919194c004dd69819800cdd718198024dd69819801cdd7181980124444b3001303800589980c1bab303700e225980080144cc0680308966002005130203303a0144bd7044c8c8cc06cc0e40084c00cc0f8010dd7181c800981d8012072899191980c981c00109801981e0021bae3036001303900240dd1640d4303300130320013031001302c37540031640a8605c00d1640b06eb8c0b0004dd5981600118160009815800981500098129baa0018b2046302730243754003164088602060466ea8c03cc08cdd5000c590214530103d87a80004084604a00281188966002602a60406ea800a2646464b3001302800289980318138018998030008024590251813000981300098109baa0028b203e2259800980a180f9baa00289919192cc004c09c00a26464b300130190018acc004c094dd5001401a2c81322b3001301e001899192cc004c0ac00a0111640a06eb4c0a4004c094dd50014566002601800315980098129baa0028034590264590232046408c60466ea8004c09800e2c8120c966002604600315980098049811000c5a260386044002810a2c8120dd51812800981280098101baa0028b203c22c807a2c8090dd718090009bae30120023012001300d375401116402c3009375400716401c300800130033754013149a26cac80081", + "hash": "e17f2b34d9308785e63a6e1862209f764a0c772f5cd8ad7580038d69" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.mint", + "redeemer": { + "title": "_redeemer", + "schema": { + "$ref": "#/definitions/mint_invoice_nft~1MintInvoiceRedeemer" + } + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + }, + { + "title": "mint_invoice_nft.mint_invoice_nft.else", + "redeemer": { + "schema": {} + }, + "compiledCode": "58b601010029800aba2aba1aab9faab9eaab9dab9a48888896600264653001300700198039804000cdc3a400130070024888966002600460106ea800e264b300130033009375400b1323322598009808000c4c966002600e601a6ea8006264646644b300130150038a518b2026375a60240026eb8c048008c048004c038dd5000c5900c1807800c5900e1bae300d001300e001300a375400b1640206eb8c02cc024dd5001c590070c01c004c00cdd5003c52689b2b200201", + "hash": "8f7269679fe9ee9a63d4abbf9fb2b997797a78a186fd799569a1681a" + } + ], + "definitions": { + "ByteArray": { + "title": "ByteArray", + "dataType": "bytes" + }, + "Int": { + "dataType": "integer" + }, + "aiken/crypto/VerificationKeyHash": { + "title": "VerificationKeyHash", + "dataType": "bytes" + }, + "cardano/assets/AssetName": { + "title": "AssetName", + "dataType": "bytes" + }, + "cardano/assets/PolicyId": { + "title": "PolicyId", + "dataType": "bytes" + }, + "cardano/transaction/OutputReference": { + "title": "OutputReference", + "description": "An `OutputReference` is a unique reference to an output on-chain. The `output_index`\n corresponds to the position in the output list of the transaction (identified by its id)\n that produced that output", + "anyOf": [ + { + "title": "OutputReference", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "transaction_id", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "output_index", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceDatum": { + "title": "InvoiceDatum", + "anyOf": [ + { + "title": "InvoiceDatum", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "usd_amount_cents", + "$ref": "#/definitions/Int" + }, + { + "title": "pyth_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "pin_hash", + "$ref": "#/definitions/ByteArray" + }, + { + "title": "invoice_nft_policy_id", + "$ref": "#/definitions/cardano~1assets~1PolicyId" + }, + { + "title": "invoice_nft_name", + "$ref": "#/definitions/cardano~1assets~1AssetName" + }, + { + "title": "deadline", + "$ref": "#/definitions/Int" + } + ] + } + ] + }, + "invoice/InvoiceRedeemer": { + "title": "InvoiceRedeemer", + "anyOf": [ + { + "title": "Pay", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "buyer", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "pin", + "$ref": "#/definitions/ByteArray" + } + ] + } + ] + }, + "mint_invoice_nft/MintInvoiceRedeemer": { + "title": "MintInvoiceRedeemer", + "anyOf": [ + { + "title": "MintInvoice", + "dataType": "constructor", + "index": 0, + "fields": [ + { + "title": "seller", + "$ref": "#/definitions/aiken~1crypto~1VerificationKeyHash" + }, + { + "title": "invoice_ref", + "$ref": "#/definitions/cardano~1transaction~1OutputReference" + } + ] + } + ] + } + } +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts new file mode 100644 index 00000000..bf8bdcb1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/contracts/lib/blueprint.ts @@ -0,0 +1,64 @@ +import blueprint from "@/contracts/plutus.json"; +import { + applyCborEncoding, + resolveScriptHash, + serializePlutusScript, +} from "@meshsdk/core"; + +interface BlueprintValidator { + title: string; + compiledCode: string; +} + +interface BlueprintFile { + validators: BlueprintValidator[]; +} + +const networkId = Number(process.env.NEXT_PUBLIC_CARDANO_NETWORK_ID ?? "0") as + | 0 + | 1; +const validators = (blueprint as BlueprintFile).validators; + +function findCompiledCode(fragment: string, suffix: ".spend" | ".mint") { + const validator = validators.find( + (item) => item.title.includes(fragment) && item.title.endsWith(suffix), + ); + + if (!validator) { + throw new Error( + `Validator ${fragment}${suffix} was not found in plutus.json`, + ); + } + + return validator.compiledCode; +} + +export function getInvoiceValidatorBlueprint() { + const compiledCode = findCompiledCode("invoice", ".spend"); + const cbor = applyCborEncoding(compiledCode); + const hash = resolveScriptHash(cbor, "V3"); + const { address } = serializePlutusScript( + { code: cbor, version: "V3" }, + undefined, + networkId, + ); + + return { + compiledCode, + cbor, + hash, + address: String(address), + }; +} + +export function getInvoiceMintBlueprint() { + const compiledCode = findCompiledCode("mint_invoice_nft", ".mint"); + const cbor = applyCborEncoding(compiledCode); + const hash = resolveScriptHash(cbor, "V3"); + + return { + compiledCode, + cbor, + hash, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts new file mode 100644 index 00000000..f68ac6cc --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/create-invoice-on-chain.ts @@ -0,0 +1,120 @@ +import { MeshTxBuilder } from "@meshsdk/core"; +import type { BrowserWallet } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import { + getInvoiceMintBlueprint, + getInvoiceValidatorBlueprint, +} from "@/features/contracts/lib/blueprint"; +import { + buildInvoiceDatum, + buildMintRedeemer, +} from "@/features/invoices/lib/invoice-plutus-data"; +import { textToHex } from "@/features/invoices/lib/encoding"; +import { createBlockfrostProvider } from "@/features/invoices/lib/provider"; +import { hashPin } from "@/features/invoices/lib/pin"; + +interface CreateInvoiceInput { + sellerAddress: string; + clientName: string; + concept: string; + amountUsd: number; + pin: string; + deadline: string; +} + +interface CreateInvoiceResult { + invoice: Invoice; + txHash: string; +} + +export async function createInvoiceOnChain( + wallet: BrowserWallet, + input: CreateInvoiceInput, +): Promise { + const provider = createBlockfrostProvider(); + const utxos = await wallet.getUtxos(); + const collateral = await wallet.getCollateral(); + const changeAddress = await wallet.getChangeAddress(); + + if (!collateral[0]) { + throw new Error("A collateral UTxO is required to use Plutus scripts"); + } + + if (!utxos[0]) { + throw new Error("Wallet has no spendable UTxOs"); + } + + const mintBlueprint = getInvoiceMintBlueprint(); + const invoiceBlueprint = getInvoiceValidatorBlueprint(); + const now = new Date().toISOString(); + const invoiceNftLabel = `invoice-${Date.now()}`; + const invoiceNftName = textToHex(invoiceNftLabel); + + const invoice: Invoice = { + id: crypto.randomUUID(), + sellerAddress: input.sellerAddress, + clientName: input.clientName, + concept: input.concept, + amountUsd: input.amountUsd, + pinHash: hashPin(input.pin), + invoiceNftPolicyId: mintBlueprint.hash, + invoiceNftName, + invoiceScriptAddress: invoiceBlueprint.address, + status: "open", + deadline: input.deadline, + createdAt: now, + updatedAt: now, + }; + + const datum = buildInvoiceDatum(invoice); + const mintRedeemer = buildMintRedeemer(input.sellerAddress, { + txHash: utxos[0].input.txHash, + outputIndex: utxos[0].input.outputIndex, + }); + + const unsignedTx = await new MeshTxBuilder({ + fetcher: provider, + verbose: true, + }) + .mintPlutusScriptV3() + .mint("1", mintBlueprint.hash, invoice.invoiceNftName) + .mintingScript(mintBlueprint.cbor) + .mintRedeemerValue(mintRedeemer, "JSON") + .metadataValue(721, { + [mintBlueprint.hash]: { + [invoiceNftLabel]: { + name: invoiceNftLabel, + client: input.clientName, + concept: input.concept, + amountUsd: input.amountUsd, + deadline: input.deadline, + }, + }, + }) + .txOut(invoiceBlueprint.address, [ + { unit: "lovelace", quantity: "2000000" }, + { unit: `${mintBlueprint.hash}${invoice.invoiceNftName}`, quantity: "1" }, + ]) + .txOutInlineDatumValue(datum, "JSON") + .changeAddress(changeAddress) + .selectUtxosFrom(utxos) + .txInCollateral( + collateral[0].input.txHash, + collateral[0].input.outputIndex, + collateral[0].output.amount, + collateral[0].output.address, + ) + .complete(); + + const signedTx = await wallet.signTx(unsignedTx, true); + const txHash = await wallet.submitTx(signedTx); + + return { + invoice: { + ...invoice, + lockTxHash: txHash, + lockTxIndex: 0, + }, + txHash, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts new file mode 100644 index 00000000..ab6408a0 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/encoding.ts @@ -0,0 +1,5 @@ +export function textToHex(value: string) { + return Array.from(new TextEncoder().encode(value)) + .map((byte) => byte.toString(16).padStart(2, "0")) + .join(""); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts new file mode 100644 index 00000000..487fad4d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-plutus-data.ts @@ -0,0 +1,63 @@ +import { deserializeAddress } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import { pinToBytesHex } from "@/features/invoices/lib/pin"; + +function requiredPubKeyHash(address: string) { + const { pubKeyHash } = deserializeAddress(address); + + if (!pubKeyHash) { + throw new Error("Expected a payment key hash address"); + } + + return pubKeyHash; +} + +export function buildInvoiceDatum(invoice: Invoice) { + const pythPolicyId = process.env.NEXT_PUBLIC_PYTH_PREPROD_POLICY_ID; + + if (!pythPolicyId) { + throw new Error("Missing NEXT_PUBLIC_PYTH_PREPROD_POLICY_ID"); + } + + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(invoice.sellerAddress) }, + { int: String(Math.round(invoice.amountUsd * 100)) }, + { bytes: pythPolicyId }, + { bytes: invoice.pinHash }, + { bytes: invoice.invoiceNftPolicyId }, + { bytes: invoice.invoiceNftName }, + { int: String(Date.parse(invoice.deadline)) }, + ], + }; +} + +export function buildPayRedeemer(buyerAddress: string, pin: string) { + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(buyerAddress) }, + { bytes: pinToBytesHex(pin) }, + ], + }; +} + +export function buildMintRedeemer( + sellerAddress: string, + utxoRef: { txHash: string; outputIndex: number }, +) { + return { + alternative: 0, + fields: [ + { bytes: requiredPubKeyHash(sellerAddress) }, + { + alternative: 0, + fields: [ + { bytes: utxoRef.txHash }, + { int: String(utxoRef.outputIndex) }, + ], + }, + ], + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts new file mode 100644 index 00000000..e2af803d --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/invoice-store.ts @@ -0,0 +1,7 @@ +import type { Invoice } from "@/types/invoice"; + +export const invoices: Invoice[] = []; + +export function findInvoiceById(id: string) { + return invoices.find((invoice) => invoice.id === id) ?? null; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts new file mode 100644 index 00000000..b9ef99ed --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice-on-chain.ts @@ -0,0 +1,149 @@ +import { + MeshTxBuilder, + deserializeAddress, + serializeRewardAddress, +} from "@meshsdk/core"; +import type { Asset, BrowserWallet, UTxO } from "@meshsdk/core"; +import type { Invoice } from "@/types/invoice"; +import type { AdaUsdQuote } from "@/types/oracle"; +import type { PythContext } from "@/types/pyth"; +import { getInvoiceValidatorBlueprint } from "@/features/contracts/lib/blueprint"; +import { buildPayRedeemer } from "@/features/invoices/lib/invoice-plutus-data"; +import { createBlockfrostProvider } from "@/features/invoices/lib/provider"; + +function quoteRate(quote: AdaUsdQuote) { + return Number(quote.price) * 10 ** quote.exponent; +} + +function minimumLovelace(invoice: Invoice, quote: AdaUsdQuote) { + return Math.ceil((invoice.amountUsd / quoteRate(quote)) * 1_000_000); +} + +function assetQuantity(amount: Asset[], unit: string) { + return amount.find((item) => item.unit === unit)?.quantity ?? "0"; +} + +function requireBuyerPubKeyHash(address: string) { + const { pubKeyHash } = deserializeAddress(address); + + if (!pubKeyHash) { + throw new Error("Connected wallet must expose a payment key hash"); + } + + return pubKeyHash; +} + +async function getPythContext() { + const response = await fetch("/api/pyth/context"); + const payload = (await response.json()) as { item: PythContext }; + return payload.item; +} + +async function getOracleUpdate() { + const response = await fetch("/api/oracle/ada-usd", { method: "POST" }); + const payload = (await response.json()) as { item: AdaUsdQuote }; + return payload.item; +} + +async function findInvoiceScriptUtxo(invoice: Invoice): Promise { + if (!invoice.invoiceScriptAddress) { + throw new Error("Invoice is missing invoiceScriptAddress"); + } + + const provider = createBlockfrostProvider(); + const assetUnit = `${invoice.invoiceNftPolicyId}${invoice.invoiceNftName}`; + const utxos = await provider.fetchAddressUTxOs( + invoice.invoiceScriptAddress, + assetUnit, + ); + const scriptUtxo = utxos.find( + (item) => assetQuantity(item.output.amount, assetUnit) === "1", + ); + + if (!scriptUtxo) { + throw new Error("Invoice script UTxO was not found"); + } + + return scriptUtxo; +} + +export async function payInvoiceOnChain( + wallet: BrowserWallet, + invoice: Invoice, + pin: string, +) { + const provider = createBlockfrostProvider(); + const utxos = await wallet.getUtxos(); + const collateral = await wallet.getCollateral(); + const buyerAddress = await wallet.getChangeAddress(); + + if (!collateral[0]) { + throw new Error("A collateral UTxO is required to use Plutus scripts"); + } + + const [oracle, pythContext, scriptUtxo] = await Promise.all([ + getOracleUpdate(), + getPythContext(), + findInvoiceScriptUtxo(invoice), + ]); + + const minLovelace = minimumLovelace(invoice, oracle); + const invoiceBlueprint = getInvoiceValidatorBlueprint(); + const rewardAddress = serializeRewardAddress( + pythContext.withdrawScriptHash, + true, + Number(process.env.NEXT_PUBLIC_CARDANO_NETWORK_ID ?? "0") as 0 | 1, + ); + const invoiceRedeemer = buildPayRedeemer(buyerAddress, pin); + const buyerPubKeyHash = requireBuyerPubKeyHash(buyerAddress); + const invoiceUnit = `${invoice.invoiceNftPolicyId}${invoice.invoiceNftName}`; + + const unsignedTx = await new MeshTxBuilder({ + fetcher: provider, + verbose: true, + }) + .spendingPlutusScriptV3() + .txIn( + scriptUtxo.input.txHash, + scriptUtxo.input.outputIndex, + scriptUtxo.output.amount, + scriptUtxo.output.address, + ) + .txInInlineDatumPresent() + .txInRedeemerValue(invoiceRedeemer, "JSON") + .txInScript(invoiceBlueprint.cbor) + .readOnlyTxInReference( + pythContext.stateTxHash, + pythContext.stateOutputIndex, + ) + .withdrawalPlutusScriptV3() + .withdrawal(String(rewardAddress), "0") + .withdrawalRedeemerValue([{ bytes: oracle.binary }], "JSON") + .requiredSignerHash(buyerPubKeyHash) + .txOut(invoice.sellerAddress, [ + { unit: "lovelace", quantity: String(minLovelace) }, + ]) + .txOut(buyerAddress, [ + { unit: "lovelace", quantity: "2000000" }, + { unit: invoiceUnit, quantity: "1" }, + ]) + .changeAddress(buyerAddress) + .selectUtxosFrom(utxos) + .txInCollateral( + collateral[0].input.txHash, + collateral[0].input.outputIndex, + collateral[0].output.amount, + collateral[0].output.address, + ) + .complete(); + + const signedTx = await wallet.signTx(unsignedTx, true); + const txHash = await wallet.submitTx(signedTx); + + return { + txHash, + minLovelace, + quote: oracle, + buyerAddress, + }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts new file mode 100644 index 00000000..48a5f5f2 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pay-invoice.ts @@ -0,0 +1,54 @@ +import type { AdaUsdQuote } from "@/types/oracle"; +import type { Invoice } from "@/types/invoice"; + +export interface PayInvoiceArgs { + invoice: Invoice; + quote: AdaUsdQuote; + walletAddress: string; +} + +export interface PaymentPreview { + invoiceId: string; + walletAddress: string; + quoteFeedId: number; + quotePrice: string; + quoteBinarySize: number; + quoteRateUsd: number; + expectedAda: number; + expectedLovelace: number; + txHash: string; + nextSteps: string[]; +} + +function quoteToUsdRate(quote: AdaUsdQuote) { + return Number(quote.price) * 10 ** quote.exponent; +} + +export async function payInvoice({ + invoice, + quote, + walletAddress, +}: PayInvoiceArgs) { + const quoteRateUsd = quoteToUsdRate(quote); + const expectedAda = invoice.amountUsd / quoteRateUsd; + const expectedLovelace = Math.ceil(expectedAda * 1_000_000); + const txHash = `demo_${invoice.id}_${Date.now()}`; + + return { + invoiceId: invoice.id, + walletAddress, + quoteFeedId: quote.feedId, + quotePrice: quote.price, + quoteBinarySize: quote.binary.length, + quoteRateUsd, + expectedAda, + expectedLovelace, + txHash, + nextSteps: [ + "Load the invoice datum and expected lovelace amount.", + "Attach the latest signed Pyth ADA/USD update.", + "Reference the Pyth state UTxO in preprod.", + "Build the pay transaction and lock funds at the invoice script.", + ], + } satisfies PaymentPreview; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts new file mode 100644 index 00000000..3efc7df1 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/pin.ts @@ -0,0 +1,16 @@ +import { blake2b } from "@noble/hashes/blake2.js"; +import { bytesToHex } from "@noble/hashes/utils.js"; +import { textToHex } from "@/features/invoices/lib/encoding"; + +export function normalizePin(pin: string) { + return pin.trim(); +} + +export function pinToBytesHex(pin: string) { + return textToHex(normalizePin(pin)); +} + +export function hashPin(pin: string) { + const bytes = new TextEncoder().encode(normalizePin(pin)); + return bytesToHex(blake2b(bytes, { dkLen: 32 })); +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts new file mode 100644 index 00000000..79f3949b --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/invoices/lib/provider.ts @@ -0,0 +1,11 @@ +import { BlockfrostProvider } from "@meshsdk/core"; + +export function createBlockfrostProvider() { + const projectId = process.env.NEXT_PUBLIC_BLOCKFROST_PREPROD_PROJECT_ID; + + if (!projectId) { + throw new Error("Missing NEXT_PUBLIC_BLOCKFROST_PREPROD_PROJECT_ID"); + } + + return new BlockfrostProvider(projectId); +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx new file mode 100644 index 00000000..3937a876 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/ui/safequote-app.tsx @@ -0,0 +1,326 @@ +"use client"; + +import { startTransition, useEffect, useMemo, useState } from "react"; +import type { BrowserWallet } from "@meshsdk/core"; +import { createInvoiceOnChain } from "@/features/invoices/lib/create-invoice-on-chain"; +import { payInvoiceOnChain } from "@/features/invoices/lib/pay-invoice-on-chain"; +import { getInstalledWallets, connectWallet } from "@/features/wallet/lib/wallet-adapter"; +import type { Invoice } from "@/types/invoice"; +import type { AdaUsdQuote } from "@/types/oracle"; + +export function SafeQuoteApp() { + const [wallets, setWallets] = useState<{ name: string }[]>([]); + const [connectedWallet, setConnectedWallet] = useState(null); + const [walletName, setWalletName] = useState(""); + const [walletAddress, setWalletAddress] = useState(""); + const [quote, setQuote] = useState(null); + const [invoices, setInvoices] = useState([]); + const [busy, setBusy] = useState(false); + const [createForm, setCreateForm] = useState({ + clientName: "", + concept: "", + amountUsd: "500", + pin: "", + deadline: "", + }); + + async function fetchInvoices() { + const response = await fetch("/api/invoices"); + const payload = (await response.json()) as { items: Invoice[] }; + return payload.items; + } + + async function fetchQuote() { + const response = await fetch("/api/oracle/ada-usd", { method: "POST" }); + const payload = (await response.json()) as { item: AdaUsdQuote }; + return payload.item; + } + + useEffect(() => { + let active = true; + + async function bootstrap() { + const [items, nextQuote, installedWallets] = await Promise.all([ + fetchInvoices(), + fetchQuote(), + getInstalledWallets(), + ]); + + if (!active) { + return; + } + + startTransition(() => { + setInvoices(items); + setQuote(nextQuote); + setWallets(installedWallets as { name: string }[]); + setWalletName((current) => current || installedWallets[0]?.name || ""); + }); + } + + void bootstrap(); + + return () => { + active = false; + }; + }, []); + + const myInvoices = useMemo( + () => invoices.filter((invoice) => invoice.sellerAddress === walletAddress), + [invoices, walletAddress], + ); + + const paidByMe = useMemo( + () => invoices.filter((invoice) => invoice.buyerAddress === walletAddress), + [invoices, walletAddress], + ); + + async function handleConnectWallet() { + const connection = await connectWallet(walletName); + setConnectedWallet(connection.wallet); + startTransition(() => { + setWalletAddress(connection.changeAddress); + }); + + await fetch("/api/auth/wallet", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + walletName, + address: connection.changeAddress, + }), + }); + } + + async function handleLogout() { + await fetch("/api/auth/wallet", { method: "DELETE" }); + + startTransition(() => { + setConnectedWallet(null); + setWalletAddress(""); + }); + } + + async function handleCreateInvoice(event: React.FormEvent) { + event.preventDefault(); + + if (!connectedWallet || !walletAddress) { + throw new Error("Connect a wallet before creating an invoice"); + } + + setBusy(true); + + try { + const result = await createInvoiceOnChain(connectedWallet, { + sellerAddress: walletAddress, + clientName: createForm.clientName, + concept: createForm.concept, + amountUsd: Number(createForm.amountUsd), + pin: createForm.pin, + deadline: new Date(createForm.deadline).toISOString(), + }); + + await fetch("/api/invoices", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + sellerAddress: result.invoice.sellerAddress, + clientName: result.invoice.clientName, + concept: result.invoice.concept, + amountUsd: result.invoice.amountUsd, + pinHash: result.invoice.pinHash, + invoiceNftPolicyId: result.invoice.invoiceNftPolicyId, + invoiceNftName: result.invoice.invoiceNftName, + invoiceScriptAddress: result.invoice.invoiceScriptAddress, + lockTxHash: result.invoice.lockTxHash, + lockTxIndex: result.invoice.lockTxIndex, + deadline: result.invoice.deadline, + }), + }); + + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } finally { + setBusy(false); + } + } + + async function handlePayInvoice(invoice: Invoice, pin: string) { + if (!connectedWallet || !walletAddress) { + throw new Error("Connect a wallet before paying an invoice"); + } + + setBusy(true); + + try { + const payment = await payInvoiceOnChain(connectedWallet, invoice, pin); + + await fetch(`/api/invoices/${invoice.id}`, { + method: "PATCH", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + buyerAddress: payment.buyerAddress, + adaQuoteSnapshot: payment.minLovelace / 1_000_000, + feedId: payment.quote.feedId, + txHash: payment.txHash, + status: "paid", + }), + }); + + const items = await fetchInvoices(); + startTransition(() => { + setInvoices(items); + }); + } finally { + setBusy(false); + } + } + + return ( +
+

SafeQuote

+

Quotes in USD. Settled in ADA.

+

Secure milestone escrow powered by Pyth.

+ +
+

Wallet

+ + {walletAddress ? ( + + ) : ( + + )} +

{walletAddress || "No wallet connected"}

+
+ + {walletAddress ? ( +
+

Create invoice

+
+ + setCreateForm((current) => ({ ...current, clientName: event.target.value })) + } + /> + + setCreateForm((current) => ({ ...current, concept: event.target.value })) + } + /> + + setCreateForm((current) => ({ ...current, amountUsd: event.target.value })) + } + /> + + setCreateForm((current) => ({ ...current, pin: event.target.value })) + } + /> + + setCreateForm((current) => ({ ...current, deadline: event.target.value })) + } + /> + +
+
+ ) : ( +
+

Create invoice

+

Connect a preprod wallet to create a new invoice NFT.

+
+ )} + +
+

My emitted invoices

+ {myInvoices.map((invoice) => ( +
+ {invoice.clientName} +

{invoice.concept}

+

{invoice.amountUsd} USD

+

{invoice.status}

+
+ ))} +
+ +
+

Open invoices

+ {invoices + .filter((invoice) => invoice.status === "open") + .map((invoice) => ( + + ))} +
+ +
+

Paid by my wallet

+ {paidByMe.map((invoice) => ( +
+ {invoice.clientName} +

{invoice.status}

+

{invoice.invoiceNftPolicyId}.{invoice.invoiceNftName}

+
+ ))} +
+
+ ); +} + +function PayCard({ + invoice, + quote, + onPay, + disabled, +}: { + invoice: Invoice; + quote: AdaUsdQuote | null; + onPay: (invoice: Invoice, pin: string) => Promise; + disabled: boolean; +}) { + const [pin, setPin] = useState(""); + + const minAda = quote ? invoice.amountUsd / (Number(quote.price) * 10 ** quote.exponent) : 0; + + return ( +
+ {invoice.clientName} +

{invoice.amountUsd} USD

+

Min ADA: {quote ? minAda.toFixed(4) : "Loading..."}

+ setPin(event.target.value)} placeholder="PIN" /> + +
+ ); +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts new file mode 100644 index 00000000..7e994655 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/features/wallet/lib/wallet-adapter.ts @@ -0,0 +1,26 @@ +import { BrowserWallet } from "@meshsdk/core"; + +function assertBrowserEnvironment() { + if (typeof window === "undefined") { + throw new Error("Browser wallet APIs are only available on the client"); + } +} + +export async function getInstalledWallets() { + assertBrowserEnvironment(); + return BrowserWallet.getAvailableWallets(); +} + +export async function connectWallet(walletName: string) { + assertBrowserEnvironment(); + + const wallet = await BrowserWallet.enable(walletName); + const networkId = await wallet.getNetworkId(); + const changeAddress = await wallet.getChangeAddress(); + + if (networkId === 1) { + throw new Error("Mainnet wallet detected. Switch to preprod/testnet."); + } + + return { wallet, networkId, changeAddress }; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts new file mode 100644 index 00000000..d152fe38 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/proxy.ts @@ -0,0 +1,21 @@ +import { NextResponse } from "next/server"; +import type { NextRequest } from "next/server"; + +const PRIVATE_PREFIXES = ["/dashboard", "/invoices", "/create-invoice"]; + +export function proxy(request: NextRequest) { + const session = request.cookies.get("safequote_session"); + const isPrivateRoute = PRIVATE_PREFIXES.some((prefix) => + request.nextUrl.pathname.startsWith(prefix), + ); + + if (isPrivateRoute && !session) { + return NextResponse.redirect(new URL("/", request.url)); + } + + return NextResponse.next(); +} + +export const config = { + matcher: ["/dashboard/:path*", "/invoices/:path*", "/create-invoice/:path*"], +}; diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts new file mode 100644 index 00000000..a073b618 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/auth.ts @@ -0,0 +1,10 @@ +export interface SessionUser { + id: string; + walletName: string; + walletAddress: string; +} + +export interface SessionState { + isAuthenticated: boolean; + user: SessionUser | null; +} diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts new file mode 100644 index 00000000..cde18b41 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/invoice.ts @@ -0,0 +1,23 @@ +export type InvoiceStatus = "open" | "paid" | "expired"; + +export interface Invoice { + id: string; + sellerAddress: string; + buyerAddress?: string; + clientName: string; + concept: string; + amountUsd: number; + pinHash: string; + invoiceNftPolicyId: string; + invoiceNftName: string; + invoiceScriptAddress?: string; + lockTxHash?: string; + lockTxIndex?: number; + adaQuoteSnapshot?: number; + feedId?: number; + txHash?: string; + status: InvoiceStatus; + deadline: string; + createdAt: string; + updatedAt: string; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts new file mode 100644 index 00000000..b271b8d8 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/oracle.ts @@ -0,0 +1,7 @@ +export interface AdaUsdQuote { + feedId: number; + price: string; + exponent: number; + timestampUs: string; + binary: string; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts new file mode 100644 index 00000000..a8cccf89 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/src/types/pyth.ts @@ -0,0 +1,5 @@ +export interface PythContext { + stateTxHash: string; + stateOutputIndex: number; + withdrawScriptHash: string; +} \ No newline at end of file diff --git a/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json b/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json new file mode 100644 index 00000000..cf9c65d3 --- /dev/null +++ b/lazer/cardano/safequote-veltrix/safequote-app-website/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts", + "**/*.mts" + ], + "exclude": ["node_modules"] +}