From bd4c37fda267216af64a31f7d537ef0fa751ab97 Mon Sep 17 00:00:00 2001 From: Olga Konstantinov Date: Thu, 12 Sep 2024 09:20:44 +0200 Subject: [PATCH] Feature/MGX-1223/deposit transactions tracing (#230) * add new variables for tracing * feat: add and upgrade dependencies * feat: add encrypted values for tracing * feat: add contract json for viem clients * feat: MGX-1223: add logic for tracing deposits * feat: add documentation for tracing deposits * feat: add tests for tracing of deposits * chore: update documentation and add postman collection * feat: small changes --- stash/README.md | 82 +- ...Tracing collection.postman_collection.json | 140 + ...acing environment.postman_environment.json | 33 + stash/api/stash.postman_collection.json | 567 ++++ stash/app-rollup-dev.yaml | 3 + stash/app-rollup-testnet.yaml | 3 + stash/package.json | 10 +- stash/rollup-dev.enc.env | 7 +- stash/rollup-testnet.enc.env | 7 +- stash/src/Rolldown.json | 1 + stash/src/app.ts | 37 +- stash/src/connector/RedisConnector.ts | 7 + stash/src/controller/TracingController.ts | 229 ++ stash/src/model/Transaction.ts | 23 + stash/src/repository/TransactionRepository.ts | 24 + stash/src/schema/TracingSchema.ts | 46 + stash/src/scraper/L1LogScraper.ts | 174 ++ stash/src/server.ts | 3 + stash/src/service/SyncTransactionsService.ts | 37 + stash/src/service/TracingService.ts | 153 + stash/swagger-output.json | 181 ++ stash/test/api/tracing.api.test.ts | 103 + stash/test/l1.scraper.test.ts | 167 ++ stash/test/tracing.test.ts | 121 + stash/yarn.lock | 2543 +++++++++++++++-- 25 files changed, 4424 insertions(+), 277 deletions(-) create mode 100644 stash/api/Tracing collection.postman_collection.json create mode 100644 stash/api/Tracing environment.postman_environment.json create mode 100644 stash/api/stash.postman_collection.json create mode 100644 stash/src/Rolldown.json create mode 100644 stash/src/controller/TracingController.ts create mode 100644 stash/src/model/Transaction.ts create mode 100644 stash/src/repository/TransactionRepository.ts create mode 100644 stash/src/schema/TracingSchema.ts create mode 100644 stash/src/scraper/L1LogScraper.ts create mode 100644 stash/src/service/SyncTransactionsService.ts create mode 100644 stash/src/service/TracingService.ts create mode 100644 stash/test/api/tracing.api.test.ts create mode 100644 stash/test/l1.scraper.test.ts create mode 100644 stash/test/tracing.test.ts diff --git a/stash/README.md b/stash/README.md index c50adf34..a978afb7 100644 --- a/stash/README.md +++ b/stash/README.md @@ -1,8 +1,84 @@ -# stash service +# Stash -## 1. Prerequisites +Stash is a service that serves some configurations and also caches some blockchain node information. -1. Install and configure SOPS to access secrets +## API + + +### Hosts +| Environment | URL | +|---------------------------------------------------------------------------------------|-----------------------------------------------------------------------| +| [ROLLUP-DEV](https://mangata-stash-rollup-dev-dot-direct-pixel-353917.oa.r.appspot.com) | `https://mangata-stash-rollup-dev-dot-direct-pixel-353917.oa.r.appspot.com` | +| [ROLLUP-TESTNET](https://mangata-stash-rollup-testnet-dot-direct-pixel-353917.oa.r.appspot.com) | `https://mangata-stash-rollup-testnet-dot-direct-pixel-353917.oa.r.appspot.com` | + +### API documentation +To access the public API, refer to the ```[HOST]/doc``` endpoint, where you'll find comprehensive documentation for our services. +This resource provides detailed information about our available API functionalities and how to interact with them. + + +### Postman collections +The `api/` can be imported into Postman to use the API cals. +Setup the `$host` env to rollup-dev & rollup-testnet, or replace it with actual URL in the API address bar. +Collection contains scripts to visualize the response data in a graph. +Script is defined in the `Tests` tab of the request section, and graph is in the `Body -> Visualize` tab in the response section. + +Each API has a limit of 50K entries to return. + +## Local quick start + +1. Rename `.env.local` to `.env` and add missing envs (if any) +2. Install all the dependencies `yarn` +3. Start local Redis `docker run --name stash-redis-stack -p 6379:6379 -d redis/redis-stack-server` +4. Make a copy of `.env.local` and name it `.env`. This file will be ignored from git and you can set your own values. +5. Run the app in debug mode with watch option `yarn start-local` + +## Documentation + +### Used tech + +- `Node.js` & `Typescript` +- `Express` - Node.js web framework. + +### Tests + +Tests have their own runtime docker container. Currently, most of the use cases are covered using integration tests in `integration.test.ts` + +We use a combination of `supertests` & `testcontainers` libraries to achieve smooth and unified integration tests running either on local or CI environment. + +## Storage +Google Memorystore (Redis with RDB) + +## XCM Metadata Network Service +Data in this service are managed by + +### Modification of XCM values + +1. Setup `gcloud` CLI tool (make sure you setup correct project ID - `gcloud config set project direct-pixel-353917` ) +2. Install Redis client that suits you +3. Port forward into our cloud instance `gcloud compute ssh port-forward-vm --zone=europe-west6-a -- -N -L 6379:10.96.14.131:6379` (dev Redis) +4. You can test your connection with `redis-cli ping` +5. You should be able to connect to the Redis instance of your choice thru localhost setup: `127.0.0.1` and NO password +6. You can now modify the values of XCM network configurations. + +## Configurations + +### Port forwards instance + +`port-forward-vm europe-west6-a f1-micro 10.172.0.2 34.65.196.67` + +### Port forward command + +`gcloud compute ssh port-forward-vm --zone=europe-west6-a -- -N -L 6379:REPLACE_WITH_REDIS_INERNAL_IP:6379` + +### ROLLUP-DEV + +`10.15.245.67` + +### ROLLUP-TESTNET + +`10.37.94.163` + +### Access secrets via SOPS ```bash # 1. Install sops from here https://github.com/getsops/sops diff --git a/stash/api/Tracing collection.postman_collection.json b/stash/api/Tracing collection.postman_collection.json new file mode 100644 index 00000000..1ae8c8bd --- /dev/null +++ b/stash/api/Tracing collection.postman_collection.json @@ -0,0 +1,140 @@ +{ + "info": { + "_postman_id": "d5a365ed-8d28-4b31-ae8e-03607c61bfb3", + "name": "Tracing collection", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "36395820", + "_collection_link": "https://gasp77.postman.co/workspace/GASP-Workspace~0284ceb5-a521-4b91-b1b5-aeb16ce16070/collection/36395820-d5a365ed-8d28-4b31-ae8e-03607c61bfb3?action=share&source=collection_link&creator=36395820" + }, + "item": [ + { + "name": "Start tracing", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "var jsonData = pm.response.json();", + "pm.environment.set(\"entityId\", jsonData.transaction.entityId);", + "pm.environment.set(\"address\", jsonData.transaction.address);", + "pm.environment.set(\"txHash\", jsonData.transaction.txHash);" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"txHash\": \"0x101\",\n \"address\": \"0x102\",\n \"type\": \"deposit\", //deposit or withdrawal\n \"chain\": \"Arbitrum\", //send Ethereum or Arbitrum\n \"amount\": \"400000000000000000\",\n \"asset_chainId\": \"0x106\",\n \"asset_address\": \"0x107\"\n\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "localhost:8080/tracing/tx/start", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "tracing", + "tx", + "start" + ] + }, + "description": "Tracing collection" + }, + "response": [] + }, + { + "name": "Get status by hash or entityId", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "localhost:8080/tracing/tx/{{entityId}}", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "tracing", + "tx", + "{{entityId}}" + ] + } + }, + "response": [] + }, + { + "name": "Get all for address", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "localhost:8080/tracing/tx/listByAddress/{{address}}", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "tracing", + "tx", + "listByAddress", + "{{address}}" + ] + } + }, + "response": [] + }, + { + "name": "Get transactions by address and status", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "localhost:8080/tracing/tx/listByAddress/{{address}}/{{status}}", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "tracing", + "tx", + "listByAddress", + "{{address}}", + "{{status}}" + ] + } + }, + "response": [] + }, + { + "name": "Get transaction by entityId", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "localhost:8080/tracing/tx/findByEntityId/{{entityId}}", + "host": [ + "localhost" + ], + "port": "8080", + "path": [ + "tracing", + "tx", + "findByEntityId", + "{{entityId}}" + ] + } + }, + "response": [] + } + ] +} \ No newline at end of file diff --git a/stash/api/Tracing environment.postman_environment.json b/stash/api/Tracing environment.postman_environment.json new file mode 100644 index 00000000..e4ed3a62 --- /dev/null +++ b/stash/api/Tracing environment.postman_environment.json @@ -0,0 +1,33 @@ +{ + "id": "72cf64a3-457b-4759-a7de-6da057518569", + "name": "Tracing environment", + "values": [ + { + "key": "entityId", + "value": "", + "type": "default", + "enabled": true + }, + { + "key": "txHash", + "value": "", + "type": "default", + "enabled": true + }, + { + "key": "address", + "value": "", + "type": "default", + "enabled": true + }, + { + "key": "status", + "value": "L1_INITIATED", + "type": "default", + "enabled": true + } + ], + "_postman_variable_scope": "environment", + "_postman_exported_at": "2024-09-09T12:32:49.761Z", + "_postman_exported_using": "Postman/11.11.1" +} \ No newline at end of file diff --git a/stash/api/stash.postman_collection.json b/stash/api/stash.postman_collection.json new file mode 100644 index 00000000..77638dbe --- /dev/null +++ b/stash/api/stash.postman_collection.json @@ -0,0 +1,567 @@ +{ + "info": { + "_postman_id": "ff1c3460-44ac-4685-91cd-ceabeeb75e8d", + "name": "stash", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "3658946" + }, + "item": [ + { + "name": "price history", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const res = pm.response.json();", + "const vizData = {", + " labels: _.map(res.prices, (p) => p[0]),", + " data: _.map(res.prices, (p) => p[1]),", + "};", + "", + "var template = `", + "", + "", + "", + " ", + "", + "`;", + "", + "pm.visualizer.set(template, vizData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{host}}/price-history/MGX?interval=day&days=300", + "host": [ + "{{host}}" + ], + "path": [ + "price-history", + "MGX" + ], + "query": [ + { + "key": "interval", + "value": "day" + }, + { + "key": "days", + "value": "300" + } + ] + } + }, + "response": [] + }, + { + "name": "volume history", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const res = pm.response.json();", + "const vizData = {", + " labels: _.map(res.volumes, (p) => p[0]),", + " data: _.map(res.volumes, (p) => p[1]),", + "};", + "", + "var template = `", + "", + "", + "", + " ", + "", + "`;", + "", + "pm.visualizer.set(template, vizData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{host}}/volume-history/MGX?interval=day&days=100", + "host": [ + "{{host}}" + ], + "path": [ + "volume-history", + "MGX" + ], + "query": [ + { + "key": "interval", + "value": "day" + }, + { + "key": "days", + "value": "100" + } + ] + } + }, + "response": [] + }, + { + "name": "volume history pool", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const res = pm.response.json();", + "const vizData = {", + " labels: _.map(res.volumes, (p) => p[0]),", + " data: _.map(res.volumes, (p) => p[1]),", + "};", + "", + "var template = `", + "", + "", + "", + " ", + "", + "`;", + "", + "pm.visualizer.set(template, vizData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{host}}/volume-history/pools/ALL?days=100&interval=day", + "host": [ + "{{host}}" + ], + "path": [ + "volume-history", + "pools", + "ALL" + ], + "query": [ + { + "key": "days", + "value": "100" + }, + { + "key": "interval", + "value": "day" + } + ] + } + }, + "response": [] + }, + { + "name": "TVL history", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const res = pm.response.json();", + "const vizData = {", + " labels: _.map(res.volumes, (p) => p[0]),", + " data: _.map(res.volumes, (p) => p[1]),", + "};", + "", + "var template = `", + "", + "", + "", + " ", + "", + "`;", + "", + "pm.visualizer.set(template, vizData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{host}}/tvl-history/MGX?interval=day&days=1000", + "host": [ + "{{host}}" + ], + "path": [ + "tvl-history", + "MGX" + ], + "query": [ + { + "key": "interval", + "value": "day" + }, + { + "key": "days", + "value": "1000" + } + ] + } + }, + "response": [] + }, + { + "name": "TVL history pool", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const res = pm.response.json();", + "const vizData = {", + " labels: _.map(res.volumes, (p) => p[0]),", + " data: _.map(res.volumes, (p) => p[1]),", + "};", + "", + "var template = `", + "", + "", + "", + " ", + "", + "`;", + "", + "pm.visualizer.set(template, vizData);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{host}}/tvl-history/pools/ALL?interval=15m&days=10", + "host": [ + "{{host}}" + ], + "path": [ + "tvl-history", + "pools", + "ALL" + ], + "query": [ + { + "key": "interval", + "value": "15m" + }, + { + "key": "days", + "value": "10" + } + ] + } + }, + "response": [] + } + ] +} diff --git a/stash/app-rollup-dev.yaml b/stash/app-rollup-dev.yaml index 55bf0f74..9f140bcc 100644 --- a/stash/app-rollup-dev.yaml +++ b/stash/app-rollup-dev.yaml @@ -22,6 +22,9 @@ env_variables: ORIGIN_ACCOUNT_PRIVATE_KEY: $ORIGIN_ACCOUNT_PRIVATE_KEY HOLESKY_ADDRESS: $HOLESKY_ADDRESS GASPV2_TOKEN_ADDRESS: $GASPV2_TOKEN_ADDRESS + CONTRACT_ADDRESS: $CONTRACT_ADDRESS + ETH_CHAIN_URL: $ETH_CHAIN_URL + ARBITRUM_SEPOLIA_CHAIN_URL: $ARBITRUM_SEPOLIA_CHAIN_URL manual_scaling: instances: 1 diff --git a/stash/app-rollup-testnet.yaml b/stash/app-rollup-testnet.yaml index 740052c3..46225374 100644 --- a/stash/app-rollup-testnet.yaml +++ b/stash/app-rollup-testnet.yaml @@ -22,6 +22,9 @@ env_variables: ORIGIN_ACCOUNT_PRIVATE_KEY: $ORIGIN_ACCOUNT_PRIVATE_KEY HOLESKY_ADDRESS: $HOLESKY_ADDRESS GASPV2_TOKEN_ADDRESS: $GASPV2_TOKEN_ADDRESS + CONTRACT_ADDRESS: $CONTRACT_ADDRESS + ETH_CHAIN_URL: $ETH_CHAIN_URL + ARBITRUM_SEPOLIA_CHAIN_URL: $ARBITRUM_SEPOLIA_CHAIN_URL manual_scaling: instances: 1 diff --git a/stash/package.json b/stash/package.json index d1b0b0d6..b463fdda 100644 --- a/stash/package.json +++ b/stash/package.json @@ -52,15 +52,17 @@ "decimal.js-light": "^2.5.1", "dotenv": "16.0.3", "errorhandler": "1.5.1", - "express": "4.18.1", + "express": "^4.19.2", "express-validator": "6.14.2", - "gasp-sdk": "0.0.2-eth-rollup-develop.14", - "gasp-types": "0.0.2-eth-rollup-develop.14", + "gasp-sdk": "0.0.2-eth-rollup-develop.29", + "gasp-types": "0.0.2-eth-rollup-develop.29", "ioredis": "^5.3.0", "joi": "^17.10.1", "lodash": "^4.17.21", "moment": "^2.29.4", "node-fetch": "^3.2.10", + "redis": "^4.7.0", + "redis-om": "^0.4.6", "redlock": "^5.0.0-beta.2", "rimraf": "^3.0.2", "swagger-ui-express": "^5.0.0", @@ -98,7 +100,7 @@ "eslint-plugin-sort-imports-es6-autofix": "^0.6.0", "husky": "^8.0.3", "lint-staged": "^13.2.0", - "nodemon": "^3.0.1", + "nodemon": "^3.1.4", "prettier": "^2.8.6", "pretty-quick": "^3.1.3", "sass": "1.55.0", diff --git a/stash/rollup-dev.enc.env b/stash/rollup-dev.enc.env index f76e8675..fadf5a55 100644 --- a/stash/rollup-dev.enc.env +++ b/stash/rollup-dev.enc.env @@ -5,10 +5,13 @@ CAPTCHA_SECRET=ENC[AES256_GCM,data:B+Vj6ITZZzMm8u1j+NukPg8rsGOAJ05h9CkYQa8RBkVCP ORIGIN_ACCOUNT_PRIVATE_KEY=ENC[AES256_GCM,data:oXD0jvg8K5AcD56AWIDNHxhIya8rGYpunIzb4erhNBj1uspkDFVtgdiyNY51ggRLfSMHllMxurgUxl0Qhb/jtg==,iv:7dMjx4TKPkA+BdxLayMsfxUhdfKiQFHANItySjkuXb8=,tag:BWhPmumBLsouSjJiQP9Y5Q==,type:str] HOLESKY_ADDRESS=ENC[AES256_GCM,data:JLmhFCAsZvHd5cRtqKnfMaNM6rkp4nzXTNDZbX5UX3OElhGpVsHPGSey1oBBjSz0lyUsNUE+tmoPZQ==,iv:09aSzckYJnGSQdbVtcue7fwYlBw0KK+nxD1jaQAH8+U=,tag:LH8sN0NaRVdmhB0Xg6+q2w==,type:str] GASPV2_TOKEN_ADDRESS=ENC[AES256_GCM,data:q5kEPYA363MimGSJ7HmNL7UIrB13PV6oyRWOxCeVxXts/U0W4oS5wQ==,iv:qcbC/W9GwiGePldYf5Q3xjn2zfi66KlvbzD+ZOVTPbY=,tag:pVqKWN3T+K0KtkFtkY/z6g==,type:str] +CONTRACT_ADDRESS=ENC[AES256_GCM,data:6elHnXnEtxT0duQpEjSwSkR/aKOlHh5C16nyPyWBDP8iyCFO0fhjMA==,iv:aE5/iOxhdvNEwLOyvBhOaQ1drjbHEtw+pcq6hyOzNzI=,tag:+UanbBWUYtFGcrAhGXzRgQ==,type:str] +ETH_CHAIN_URL=ENC[AES256_GCM,data:UUqnXHiy85irgllbaahnjEpgad1hpxMzNDwypMngZwMonAaVPrk=,iv:fu+UqdqFKxxPCeVfe0X+6APpxApgz5Bk96T7TNOq248=,tag:C0b9/ROqxxXXwktEIZUS5w==,type:str] +ARBITRUM_SEPOLIA_CHAIN_URL=ENC[AES256_GCM,data:RIBtFzUdIDp6XWSIG/QmR0YsjngXFp8bcePdpicY9Jfo6TJvPnI=,iv:E5BmtNKCDs0ARdpldTzvYxNSFWpTndmAT+miFsH+aog=,tag:SYRgmoaLbpV18aRo9k7kOw==,type:str] sops_gcp_kms__list_0__map_created_at=2024-07-05T14:20:15Z sops_gcp_kms__list_0__map_enc=CiQAN1RhzZJiBv/qkgDxpi43NbC2GZ7BUYjrbSKp4VznjXXhV1kSSQB0MkpZpK7u6z/sNv8eV8lrdWWntphDGitq41eshZB0H5udxoaOYbRts4Wdm5hIW1OjW75BWu56jxuq7jjzf97S6c7ZYm20bBY= sops_gcp_kms__list_0__map_resource_id=projects/direct-pixel-353917/locations/global/keyRings/sops/cryptoKeys/sops-key -sops_lastmodified=2024-08-06T07:28:01Z -sops_mac=ENC[AES256_GCM,data:ZHmMqKkn3TBihGVQQ0kDbQHTtoc2/RIejhWxYFShAUMj65+0DH2N5HFotOu8X+n48pymUrVURJXIjxd63oda6q23jg/TXYezpP1/q1j64ZEwSG18prfzC0+sUIsMegMm0FIVd3sznAfb91Iwa4Z9le/10XMr8Pqva1sYxMMuVpQ=,iv:rDSXnTm7COaN3nojpEwMzqHIequxxpQwq7it3f5mVLM=,tag:3XfEKhKqTnDaf9hOj87EiA==,type:str] +sops_lastmodified=2024-09-09T11:17:41Z +sops_mac=ENC[AES256_GCM,data:Z4deXOYvRhTMdA/nPh2Ir6Iqe4pzh6ZWGBtVIZBJs1cV/YsTrApf6YKo0EHq/Rj6pBCWsjWV4B1ai6eqnQSmAkri5kfa1FsRTO5+8d/dHuKZOmqAa3GrPXvYsHa14Xt5f+GHTb/qkZo79MZjm4SZCATYoyq+4wP9G2yFxg2lbzQ=,iv:S03xBMa7Ih3GJQJ7PJizFMRjmFT8Njeuui0nuJ1mc+M=,tag:tft5GaxROwDmN0sj+EaKTQ==,type:str] sops_unencrypted_suffix=_unencrypted sops_version=3.9.0 diff --git a/stash/rollup-testnet.enc.env b/stash/rollup-testnet.enc.env index 42b79cd4..efef65a7 100644 --- a/stash/rollup-testnet.enc.env +++ b/stash/rollup-testnet.enc.env @@ -5,10 +5,13 @@ CAPTCHA_SECRET=ENC[AES256_GCM,data:NYnPFRBUS4znmx7Iuf7X2M/HY4pk4PPyA7R69A+EFiYns ORIGIN_ACCOUNT_PRIVATE_KEY=ENC[AES256_GCM,data:YfWC3Cqdtto7Y2Pp6UzEXeHT/Hadpd2Au3/kz2UbGM+/rPTxwS/FtqLPrUwUyRbOv4eZWiv8BU6elD8aOvh57w==,iv:9J+AIrIb9Qtg0PHXYG1bVRH6Uqew20td2LNW//FgCqU=,tag:65yCo8EMY/4jf8+DxgLGiQ==,type:str] HOLESKY_ADDRESS=ENC[AES256_GCM,data:0/q45lldez+Fom8UeTQlAo+wecqM09iO8G6vgezO5bGuIq/sn6WGadtm+fdSNpwrv9QxxI4NHNVMpQ==,iv:08icndbG+dFD6DYLW/MCIZiqK/6lYRcRDj91dyEHa+k=,tag:sRqHeMrxW2QufCcAHjG/iA==,type:str] GASPV2_TOKEN_ADDRESS=ENC[AES256_GCM,data:pWE0WgZZpDYAv4vHTXuqNqdvu6GL7Jx7LrOjNW5MjjXZfKPmoW1URA==,iv:13yydCFWcyMbEjQdb0OMOlBSy9Krwf1a4KNbcpHDZHY=,tag:53exLQ7BDmu13WKlnDQ5fw==,type:str] +CONTRACT_ADDRESS=ENC[AES256_GCM,data:hKZFZIeqp4d2HfOX57OxI16e3OQ8cIJoVhoMICMG4/g5JVekJQ7xYw==,iv:b8SU2O3J8Si1UMMFwruBz306f2w6D8veRcJCF7So5iQ=,tag:Ay7CQqIEgiIDj6YTcohKcA==,type:str] +ETH_CHAIN_URL=ENC[AES256_GCM,data:GRSjJF3r+P91+9i3U9X4KQirBlj+7NV4xwTapg8gEt15fGXF/5a2dEr5sJvPlCVQkyNyQrnR+c+i,iv:ZKF4NHhGwSaYmI6kIFMjDZoW0//Xkr3e5Ll29/Pp5A8=,tag:zSTB6wRqz9/2RU7wQfqU1g==,type:str] +ARBITRUM_SEPOLIA_CHAIN_URL=ENC[AES256_GCM,data:w+3qyxJLmYOmHeC3LzHA4y/AzNkuVsb3lvQsEFzHS84mSofYBnuNCD3rodI2G9Smoe/6SesWdCHaFNrLiSqho4dC,iv:94nx9MsMTFOItSjtjXry8MF3dX3azb24rcglSuAocPY=,tag:o/RtaY6dWeSeeW+X9c+NWQ==,type:str] sops_gcp_kms__list_0__map_created_at=2024-07-05T14:25:15Z sops_gcp_kms__list_0__map_enc=CiQAN1RhzRMcd7TxmT4c7viDfbI+LTmgVMCbll4/Bv3FSUIb9esSSQB0MkpZud6l8ROr4ZLdmraAl2FWLB0AGasYSoD6l2VJlVxQyD0FnEVjltIajssRkt4soCY1N6rqjekrRNpiRCBm0XMKYis/mo4= sops_gcp_kms__list_0__map_resource_id=projects/direct-pixel-353917/locations/global/keyRings/sops/cryptoKeys/sops-key -sops_lastmodified=2024-08-06T07:28:22Z -sops_mac=ENC[AES256_GCM,data:gEinO9EFfTk+VcxB6dqnsPNm9OnsH39+KEk6l0hLMv0PsmdaI0cNzzEODx6rUQ82iAO4qJXIarhJVwDy+kjE8Q/Z1xY+Uvl3jScWJGTkbUCPWR5qpTI3WxvZeiURu3BsMWlsp3BTLg+4sIj9Tdyk2sDxHTH7qXnrpkviNUQPTv0=,iv:JMn8xRIfC98ir+kEnS0WcT6IckhLDO/ifVpGrMrNVFw=,tag:J6h8tDzEXr8Trb3lY2uw/w==,type:str] +sops_lastmodified=2024-09-09T11:19:14Z +sops_mac=ENC[AES256_GCM,data:iWcuE6VEDAdS5DSfDznNcH2rZfEvJB8v0inLc2ABvZDyG2TOA8tTFJo+/ZKXJZ4K2NfBir3FBt1LCysdy5Yum+4F20ovmMrmfJiW6ZJsXknQo3Z9hwukvL9FLbjwU14w+anZ+S16MXPoiUe7tLilGfSIBq9XY/QthGnakm1QPpw=,iv:pe0p9WxU442HbUWRHnRixLB1cgWURHdNaEKySjl+pTw=,tag:WhxVz2/DafAEaufMHwQXyw==,type:str] sops_unencrypted_suffix=_unencrypted sops_version=3.9.0 diff --git a/stash/src/Rolldown.json b/stash/src/Rolldown.json new file mode 100644 index 00000000..d2da6711 --- /dev/null +++ b/stash/src/Rolldown.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"ETH_TOKEN_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"calculate_root","inputs":[{"name":"leave_hash","type":"bytes32","internalType":"bytes32"},{"name":"leave_idx","type":"uint32","internalType":"uint32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"},{"name":"leaves_count","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"calculate_root_impl","inputs":[{"name":"level","type":"uint32","internalType":"uint32"},{"name":"pos","type":"uint32","internalType":"uint32"},{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"proofs","type":"bytes32[]","internalType":"bytes32[]"},{"name":"proof_idx","type":"uint32","internalType":"uint32"},{"name":"max_index","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"cancelResolutions","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"l2RequestId","type":"uint256","internalType":"uint256"},{"name":"cancelJustified","type":"bool","internalType":"bool"},{"name":"timeStamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"chain","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"enum IRolldownPrimitives.ChainId"}],"stateMutability":"view"},{"type":"function","name":"close_cancel","inputs":[{"name":"cancel","type":"tuple","internalType":"struct IRolldownPrimitives.Cancel","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"range","type":"tuple","internalType":"struct IRolldownPrimitives.Range","components":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}]},{"name":"hash","type":"bytes32","internalType":"bytes32"}]},{"name":"merkle_root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"close_withdrawal","inputs":[{"name":"withdrawal","type":"tuple","internalType":"struct IRolldownPrimitives.Withdrawal","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"recipient","type":"address","internalType":"address"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"merkle_root","type":"bytes32","internalType":"bytes32"},{"name":"proof","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"counter","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit_erc20","inputs":[{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit_native","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"find_l2_batch","inputs":[{"name":"requestId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRolldownPrimitives.Range","components":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getPendingRequests","inputs":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IRolldownPrimitives.L1Update","components":[{"name":"chain","type":"uint8","internalType":"enum IRolldownPrimitives.ChainId"},{"name":"pendingDeposits","type":"tuple[]","internalType":"struct IRolldownPrimitives.Deposit[]","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"depositRecipient","type":"address","internalType":"address"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timeStamp","type":"uint256","internalType":"uint256"}]},{"name":"pendingCancelResolutions","type":"tuple[]","internalType":"struct IRolldownPrimitives.CancelResolution[]","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"l2RequestId","type":"uint256","internalType":"uint256"},{"name":"cancelJustified","type":"bool","internalType":"bool"},{"name":"timeStamp","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"getUpdateForL2","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct IRolldownPrimitives.L1Update","components":[{"name":"chain","type":"uint8","internalType":"enum IRolldownPrimitives.ChainId"},{"name":"pendingDeposits","type":"tuple[]","internalType":"struct IRolldownPrimitives.Deposit[]","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"depositRecipient","type":"address","internalType":"address"},{"name":"tokenAddress","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"timeStamp","type":"uint256","internalType":"uint256"}]},{"name":"pendingCancelResolutions","type":"tuple[]","internalType":"struct IRolldownPrimitives.CancelResolution[]","components":[{"name":"requestId","type":"tuple","internalType":"struct IRolldownPrimitives.RequestId","components":[{"name":"origin","type":"uint8","internalType":"enum IRolldownPrimitives.Origin"},{"name":"id","type":"uint256","internalType":"uint256"}]},{"name":"l2RequestId","type":"uint256","internalType":"uint256"},{"name":"cancelJustified","type":"bool","internalType":"bool"},{"name":"timeStamp","type":"uint256","internalType":"uint256"}]}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_pauserRegistry","type":"address","internalType":"contract IPauserRegistry"},{"name":"initialOwner","type":"address","internalType":"address"},{"name":"chainId","type":"uint8","internalType":"enum IRolldownPrimitives.ChainId"},{"name":"updater","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastProcessedUpdate_origin_l1","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lastProcessedUpdate_origin_l2","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"merkleRootRange","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pauseAll","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"paused","inputs":[{"name":"index","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pauserRegistry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPauserRegistry"}],"stateMutability":"view"},{"type":"function","name":"processedL2Requests","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPauserRegistry","inputs":[{"name":"newPauserRegistry","type":"address","internalType":"contract IPauserRegistry"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setUpdater","inputs":[{"name":"updater","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unpause","inputs":[{"name":"newPausedStatus","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"update_l1_from_l2","inputs":[{"name":"merkle_root","type":"bytes32","internalType":"bytes32"},{"name":"range","type":"tuple","internalType":"struct IRolldownPrimitives.Range","components":[{"name":"start","type":"uint256","internalType":"uint256"},{"name":"end","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updaterAccount","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"DepositAcceptedIntoQueue","inputs":[{"name":"requestId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"depositRecipient","type":"address","indexed":false,"internalType":"address"},{"name":"tokenAddress","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DisputeResolutionAcceptedIntoQueue","inputs":[{"name":"requestId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"cancelJustified","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"ERC20TokensWithdrawn","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"token_address","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"NativeTokensWithdrawn","inputs":[{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"NewUpdaterSet","inputs":[{"name":"updater","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauserRegistrySet","inputs":[{"name":"pauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"},{"name":"newPauserRegistry","type":"address","indexed":false,"internalType":"contract IPauserRegistry"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"newPausedStatus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawalClosed","inputs":[{"name":"requestId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"withdrawalHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x608060405234801561001057600080fd5b50600160d2556132a9806100256000396000f3fe6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d16544f011610095578063f2fde38b11610064578063f2fde38b146105a4578063f9ecd01e146105c4578063fabc1cbc146105ff578063ffea632b1461061f57600080fd5b8063d16544f01461052e578063dfb0b12b1461054e578063ef0ba5d01461056e578063f26ee9d01461058e57600080fd5b8063b1538706116100d1578063b1538706146104ba578063c763e5a1146104cf578063c87c2224146104f6578063ca9b21ae146104fe57600080fd5b80638da5cb5b1461042c5780639d54f4191461044a578063a555980b1461046a578063af26c6951461049a57600080fd5b80635ac86ab71161017a57806371c544611161014957806371c54461146103a457806379e041f2146103c95780637fd4f845146103f6578063886f11951461040c57600080fd5b80635ac86ab71461031a5780635c975abb1461035a57806361bc221a14610379578063715018a61461038f57600080fd5b80631878d1f1116101b65780631878d1f11461026a57806347e7ef241461029c5780634f48eedf146102bc578063595c6a671461030557600080fd5b806301ef6966146101e857806308f42d401461020a57806310d67a2f1461022a578063136439dd1461024a575b600080fd5b3480156101f457600080fd5b506102086102033660046129dc565b61063f565b005b34801561021657600080fd5b50610208610225366004612a37565b61084c565b34801561023657600080fd5b50610208610245366004612a84565b610a15565b34801561025657600080fd5b50610208610265366004612aa1565b610ac8565b34801561027657600080fd5b5061027f600181565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a857600080fd5b506102086102b7366004612aba565b610c07565b3480156102c857600080fd5b506102f06102d7366004612aa1565b609d602052600090815260409020805460019091015482565b60408051928352602083019190915201610293565b34801561031157600080fd5b50610208610c35565b34801561032657600080fd5b5061034a610335366004612ae6565b606654600160ff9092169190911b9081161490565b6040519015158152602001610293565b34801561036657600080fd5b506066545b604051908152602001610293565b34801561038557600080fd5b5061036b60975481565b34801561039b57600080fd5b50610208610cfc565b3480156103b057600080fd5b50609a5461027f9061010090046001600160a01b031681565b3480156103d557600080fd5b506103e96103e4366004612b09565b610d10565b6040516102939190612bdf565b34801561040257600080fd5b5061036b60985481565b34801561041857600080fd5b5060655461027f906001600160a01b031681565b34801561043857600080fd5b506033546001600160a01b031661027f565b34801561045657600080fd5b50610208610465366004612a84565b6110bd565b34801561047657600080fd5b5061034a610485366004612aa1565b609e6020526000908152604090205460ff1681565b3480156104a657600080fd5b5061036b6104b5366004612cb2565b6111bb565b3480156104c657600080fd5b506103e961120c565b3480156104db57600080fd5b50609a546104e99060ff1681565b6040516102939190612d21565b610208611257565b34801561050a57600080fd5b5061051e610519366004612aa1565b61141e565b6040516102939493929190612d34565b34801561053a57600080fd5b50610208610549366004612aba565b611490565b34801561055a57600080fd5b506102086105693660046129dc565b6116ba565b34801561057a57600080fd5b5061036b610589366004612d5d565b61188e565b34801561059a57600080fd5b5061036b60995481565b3480156105b057600080fd5b506102086105bf366004612a84565b6119ca565b3480156105d057600080fd5b506105e46105df366004612aa1565b611a40565b60408051825181526020928301519281019290925201610293565b34801561060b57600080fd5b5061020861061a366004612aa1565b611bb4565b34801561062b57600080fd5b5061020861063a366004612dfa565b611d10565b606654156106685760405162461bcd60e51b815260040161065f90612e56565b60405180910390fd5b600260d254141561068b5760405162461bcd60e51b815260040161065f90612e8d565b600260d2556000838152609d60209081526040918290208251808401909352805480845260019091015491830191909152158015906106cd5750602081015115155b61070f5760405162461bcd60e51b8152602060048201526013602482015272155b9adb9bdddb881b595c9adb19481c9bdbdd606a1b604482015260640161065f565b6000856040516020016107229190612ee5565b60408051601f198184030181529181528151602092830120888301356000908152609e90935291205490915060ff16156107925760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c1c9bd8d95cdcd959607a1b604482015260640161065f565b815160208301516000916107a591612f2d565b6107b0906001612f44565b83519091506000906107c79060208a013590612f2d565b9050866107d784838989876111bb565b146108145760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161065f565b61081d88611e89565b505050506020938401356000908152609e90945250506040909120805460ff1916600190811790915560d25550565b6066541561086c5760405162461bcd60e51b815260040161065f90612e56565b609a5461010090046001600160a01b031633146108bb5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b604482015260640161065f565b6099548160200135116109105760405162461bcd60e51b815260206004820152601960248201527f557064617465206272696e6773206e6f206e6577206461746100000000000000604482015260640161065f565b60995461091f60018335612f2d565b111561096d5760405162461bcd60e51b815260206004820152601760248201527f50726576696f757320757064617465206d697373696e67000000000000000000604482015260640161065f565b8035602082013510156109b25760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b604482015260640161065f565b609f8054600181019091557f0bc14066c33013fe88f66e314e4cf150b0b2d4d6451a1a51dbbd1c27cd11de28018290556000828152609d602052604090208190610a09828281358155602082013560018201555050565b50506020013560995550565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190612f5c565b6001600160a01b0316336001600160a01b031614610abc5760405162461bcd60e51b815260040161065f90612f79565b610ac581611fdb565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190612fc3565b610b505760405162461bcd60e51b815260040161065f90612fe5565b60665481811614610bc95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161065f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60665415610c275760405162461bcd60e51b815260040161065f90612e56565b610c318282611490565b5050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190612fc3565b610cbd5760405162461bcd60e51b815260040161065f90612fe5565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610d046120d2565b610d0e600061212c565b565b610d356040805160608101909152806000815260200160608152602001606081525090565b610d5a6040805160608101909152806000815260200160608152602001606081525090565b609a54819060ff166001811115610d7357610d73612b2b565b90816001811115610d8657610d86612b2b565b905250600080855b858111610df5576000818152609c602052604090206001015415610dbe5782610db68161302d565b935050610de3565b6000818152609b602052604090206001015415610de35781610ddf8161302d565b9250505b80610ded8161302d565b915050610d8e565b508167ffffffffffffffff811115610e0f57610e0f613048565b604051908082528060200260200182016040528015610e7557816020015b6040805160e081018252600060a0820181815260c08301829052825260208083018290529282018190526060820181905260808201528252600019909201910181610e2d5790505b5060208401528067ffffffffffffffff811115610e9457610e94613048565b604051908082528060200260200182016040528015610ef357816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181610eb25790505b506040840152506000905080855b8581116110b2576000818152609c602052604090206001015415610fe0576000818152609c602052604090819020815160e081019092528054829060a08201908390829060ff166001811115610f5957610f59612b2b565b6001811115610f6a57610f6a612b2b565b81526001919091015460209182015290825260028301546001600160a01b039081168383015260038401541660408301526004830154606083015260059092015460809091015285015184610fbe8161302d565b955081518110610fd057610fd061305e565b60200260200101819052506110a0565b6000818152609b60205260409020600201541561109b576000818152609b602052604090819020815160c081019092528054829060808201908390829060ff16600181111561103157611031612b2b565b600181111561104257611042612b2b565b815260019190910154602091820152908252600283015490820152600382015460ff161515604080830191909152600490920154606090910152850151836110898161302d565b945081518110610fd057610fd061305e565b6110b2565b806110aa8161302d565b915050610f01565b509195945050505050565b606654156110dd5760405162461bcd60e51b815260040161065f90612e56565b609a5461010090046001600160a01b0316331461115b5760405162461bcd60e51b815260206004820152603660248201527f4f6e6c792061637469766520757064617465722063616e206d6f7665207269676044820152751a1d1cc81d1bc818481b995dc818481858d8dbdd5b9d60521b606482015260840161065f565b609a8054610100600160a81b0319166101006001600160a01b038481168202929092179283905560405192041681527f1b0f2f500df596b42b73e80dbec6a1fb570f01978a586723f988a5fc54d773a1906020015b60405180910390a150565b600080825b63ffffffff8116156111eb576111d760028261308a565b90506111e46001836130ad565b91506111c0565b61120082888a8989600061058960018c6130d5565b98975050505050505050565b6112316040805160608101909152806000815260200160608152602001606081525090565b61125260985460016112439190612f44565b60016097546103e49190612f2d565b905090565b606654156112775760405162461bcd60e51b815260040161065f90612e56565b600034116112c75760405162461bcd60e51b815260206004820181905260248201527f6d73672076616c7565206d757374206265206772656174657220746861742030604482015260640161065f565b6040805160e081019091523390349042906000908060a0810180848152602001609760008154809291906112fa9061302d565b90915550905281526001600160a01b0386166020808301919091526001604080840182905260608401889052608090930186905283518201516000908152609c9092529190208251805182549495508594929391928492839160ff191690838181111561136957611369612b2b565b0217905550602091820151600191820155838201516002840180546001600160a01b03199081166001600160a01b039384161790915560408087015160038701805490931690841617909155606080870151600487015560809687015160059096019590955586518401518151908152918a1693820193909352918201529081018590527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa910160405180910390a150505050565b609b6020526000908152604090819020815180830190925280549091908290829060ff16600181111561145357611453612b2b565b600181111561146457611464612b2b565b815260019190910154602090910152600282015460038301546004909301549192909160ff9091169084565b606654156114b05760405162461bcd60e51b815260040161065f90612e56565b600260d25414156114d35760405162461bcd60e51b815260040161065f90612e8d565b600260d2556001600160a01b0382166115265760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065f565b600081116115465760405162461bcd60e51b815260040161065f906130fa565b338261155d6001600160a01b03821683308661217e565b6040805160e0810190915242906000908060a08101808481526020016097600081548092919061158c9061302d565b90915550905281526001600160a01b0380871660208084019190915290891660408084019190915260608301899052608090920185905282518101516000908152609c909152208151805182549394508493839190829060ff1916600183818111156115fa576115fa612b2b565b021790555060209182015160019190910155828101516002830180546001600160a01b03199081166001600160a01b03938416179091556040808601516003860180549093169084161790915560608086015160048601556080958601516005909501949094558551830151815190815289831693810193909352908a16908201529081018790527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa910160405180910390a15050600160d25550505050565b606654156116da5760405162461bcd60e51b815260040161065f90612e56565b600260d25414156116fd5760405162461bcd60e51b815260040161065f90612e8d565b600260d2556000838152609d602090815260409182902082518084019093528054808452600190910154918301919091521580159061173f5750602081015115155b6117815760405162461bcd60e51b8152602060048201526013602482015272155b9adb9bdddb881b595c9adb19481c9bdbdd606a1b604482015260640161065f565b600085604051602001611794919061312f565b60408051601f198184030181529181528151602092830120888301356000908152609e90935291205490915060ff16156118045760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c1c9bd8d95cdcd959607a1b604482015260640161065f565b8151602083015160009161181791612f2d565b611822906001612f44565b83519091506000906118389060208a0135612f2d565b90508661184884838989876111bb565b146118855760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161065f565b61081d886121ef565b600061189b600288613181565b63ffffffff16611920578163ffffffff168763ffffffff1614156118be5761197e565b858585856118cb816131a4565b965063ffffffff168181106118e2576118e261305e565b90506020020135604051602001611903929190918252602082015260400190565b60405160208183030381529060405280519060200120955061197e565b84848461192c816131a4565b955063ffffffff168181106119435761194361305e565b9050602002013586604051602001611965929190918252602082015260400190565b6040516020818303038152906040528051906020012095505b8763ffffffff16600114156119945750846119bf565b6119bc6119a260018a6130d5565b6119ad60028a61308a565b8888888861058960028a61308a565b90505b979650505050505050565b6119d26120d2565b6001600160a01b038116611a375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065f565b610ac58161212c565b6040805180820190915260008082526020820152609954821115611a9b5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b604482015260640161065f565b609f54611abb575050604080518082019091526000808252602082015290565b609f54600090611acd90600190612f2d565b90505b609d6000609f8381548110611ae757611ae761305e565b90600052602060002001548152602001908152602001600020600001548310158015611b465750609d6000609f8381548110611b2557611b2561305e565b90600052602060002001548152602001908152602001600020600101548311155b15611ba257609d6000609f8381548110611b6257611b6261305e565b9060005260206000200154815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050915050919050565b80611bac816131c8565b915050611ad0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2b9190612f5c565b6001600160a01b0316336001600160a01b031614611c5b5760405162461bcd60e51b815260040161065f90612f79565b606654198119606654191614611cd95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161065f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610bfc565b600054610100900460ff1615808015611d305750600054600160ff909116105b80611d4a5750303b158015611d4a575060005460ff166001145b611dad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161065f565b6000805460ff191660011790558015611dd0576000805461ff0019166101001790555b611ddb856000612288565b611de48461212c565b6000609881905560016097819055609991909155609a8054859260ff19909116908381811115611e1657611e16612b2b565b0217905550609a8054610100600160a81b0319166101006001600160a01b038516021790558015611e82576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050505050565b6000611e9d60408301356060840135610d10565b9050600081604051602001611eb29190612bdf565b60408051601f19818403018152828252805160209091012060c083019091529150429060009080608081018084815260200160976000815480929190611ef79061302d565b9091555090528152602087810135818301526080880135861415604080840191909152606090920185905282518101516000908152609b909152208151805182549394508493839190829060ff191660018381811115611f5957611f59612b2b565b021790555060209182015160019091015582810151600283015560408084015160038401805491151560ff199092169190911790556060909301516004909201919091558201518282015191517fd16f202ac5905ff5d1851f4805ffe56d1212db32fa989881d0044b9cf0f7277692611e799282521515602082015260400190565b6001600160a01b0381166120695760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161065f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610d0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526121e99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261236e565b50505050565b60016122016080830160608401612a84565b6001600160a01b0316141561221e5761221981612445565b612227565b6122278161252d565b7f935f26d94be31907080aa78b3e6e2ac6d48a072af096c20268388621bbc11789816000016020013582604051602001612261919061312f565b60408051601f198184030181528282528051602091820120938352820192909252016111b0565b6065546001600160a01b03161580156122a957506001600160a01b03821615155b61232b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161065f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610c3182611fdb565b60006123c3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126bc9092919063ffffffff16565b80519091501561244057808060200190518101906123e19190612fc3565b6124405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065f565b505050565b60808101353031101561249a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682066756e647320696e20636f6e747261637400000000604482015260640161065f565b60008160800135116124be5760405162461bcd60e51b815260040161065f906130fa565b6124db6124d16060830160408401612a84565b82608001356126d5565b7fe0495355c1e04c512584521854d222d239a4b782b39ac8a7e835a34f5ec7c1e161250c6060830160408401612a84565b604080516001600160a01b03909216825260808401356020830152016111b0565b600061253f6080830160608401612a84565b6040516370a0823160e01b81523060048201529091506080830135906001600160a01b038316906370a0823190602401602060405180830381865afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b091906131df565b10156125fe5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682066756e647320696e20636f6e747261637400000000604482015260640161065f565b60008260800135116126225760405162461bcd60e51b815260040161065f906130fa565b61264a6126356060840160408501612a84565b6001600160a01b0383169060808501356127ee565b7ee763f7778b8ceef7270c89b7d1df1008b0e482da39c43831417733af96fb0d61267a6060840160408501612a84565b61268a6080850160608601612a84565b604080516001600160a01b03938416815292909116602083015260808501359082015260600160405180910390a15050565b60606126cb848460008561281e565b90505b9392505050565b804710156127255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161065f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612772576040519150601f19603f3d011682016040523d82523d6000602084013e612777565b606091505b50509050806124405760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161065f565b6040516001600160a01b03831660248201526044810182905261244090849063a9059cbb60e01b906064016121b2565b60608247101561287f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161065f565b6001600160a01b0385163b6128d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065f565b600080866001600160a01b031685876040516128f29190613224565b60006040518083038185875af1925050503d806000811461292f576040519150601f19603f3d011682016040523d82523d6000602084013e612934565b606091505b50915091506119bf8282866060831561294e5750816126ce565b82511561295e5782518084602001fd5b8160405162461bcd60e51b815260040161065f9190613240565b600060a0828403121561298a57600080fd5b50919050565b60008083601f8401126129a257600080fd5b50813567ffffffffffffffff8111156129ba57600080fd5b6020830191508360208260051b85010111156129d557600080fd5b9250929050565b60008060008060e085870312156129f257600080fd5b6129fc8686612978565b935060a0850135925060c085013567ffffffffffffffff811115612a1f57600080fd5b612a2b87828801612990565b95989497509550505050565b6000808284036060811215612a4b57600080fd5b833592506040601f1982011215612a6157600080fd5b506020830190509250929050565b6001600160a01b0381168114610ac557600080fd5b600060208284031215612a9657600080fd5b81356126ce81612a6f565b600060208284031215612ab357600080fd5b5035919050565b60008060408385031215612acd57600080fd5b8235612ad881612a6f565b946020939093013593505050565b600060208284031215612af857600080fd5b813560ff811681146126ce57600080fd5b60008060408385031215612b1c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b60028110610ac557634e487b7160e01b600052602160045260246000fd5b8051612b6a81612b41565b8252602090810151910152565b600081518084526020808501945080840160005b83811015612bd4578151612ba0888251612b5f565b8084015160408981019190915281015115156060808a01919091520151608088015260a09096019590820190600101612b8b565b509495945050505050565b6000602080835260808084018551612bf681612b41565b85840152858301516060604080880182905282519384905260a093928601928489019060005b81811015612c6e578551612c31848251612b5f565b808a01516001600160a01b03908116858701528582015116868501528581015189850152880151878401529488019460c090920191600101612c1c565b505089820151898203601f1901848b01529650612c8b8188612b77565b9a9950505050505050505050565b803563ffffffff81168114612cad57600080fd5b919050565b600080600080600060808688031215612cca57600080fd5b85359450612cda60208701612c99565b9350604086013567ffffffffffffffff811115612cf657600080fd5b612d0288828901612990565b9094509250612d15905060608701612c99565b90509295509295909350565b60208101612d2e83612b41565b91905290565b60a08101612d428287612b5f565b60408201949094529115156060830152608090910152919050565b600080600080600080600060c0888a031215612d7857600080fd5b612d8188612c99565b9650612d8f60208901612c99565b955060408801359450606088013567ffffffffffffffff811115612db257600080fd5b612dbe8a828b01612990565b9095509350612dd1905060808901612c99565b9150612ddf60a08901612c99565b905092959891949750929550565b60028110610ac557600080fd5b60008060008060808587031215612e1057600080fd5b8435612e1b81612a6f565b93506020850135612e2b81612a6f565b92506040850135612e3b81612ded565b91506060850135612e4b81612a6f565b939692955090935050565b6020808252601c908201527f5061757361626c653a20636f6e74726163742069732070617573656400000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b8035612ecf81612ded565b612ed881612b41565b8252602090810135910152565b60a08101612ef38284612ec4565b60408301356040830152606083013560608301526080830135608083015292915050565b634e487b7160e01b600052601160045260246000fd5b600082821015612f3f57612f3f612f17565b500390565b60008219821115612f5757612f57612f17565b500190565b600060208284031215612f6e57600080fd5b81516126ce81612a6f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612fd557600080fd5b815180151581146126ce57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600060001982141561304157613041612f17565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806130a1576130a1613074565b92169190910492915050565b600063ffffffff8083168185168083038211156130cc576130cc612f17565b01949350505050565b600063ffffffff838116908316818110156130f2576130f2612f17565b039392505050565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b60a0810161313d8284612ec4565b604083013561314b81612a6f565b6001600160a01b03908116604084015260608401359061316a82612a6f565b166060830152608092830135929091019190915290565b600063ffffffff8084168061319857613198613074565b92169190910692915050565b600063ffffffff808316818114156131be576131be612f17565b6001019392505050565b6000816131d7576131d7612f17565b506000190190565b6000602082840312156131f157600080fd5b5051919050565b60005b838110156132135781810151838201526020016131fb565b838111156121e95750506000910152565b600082516132368184602087016131f8565b9190910192915050565b602081526000825180602084015261325f8160408501602087016131f8565b601f01601f1916919091016040019291505056fea2646970667358221220710f213ee09bce253ec1f0230f68c4530d2e6fbaa056d33eb600dd60b71fdb8b64736f6c634300080c0033","sourceMap":"621:10651:130:-:0;;;;;;;;;;;;-1:-1:-1;1701:1:17;1806:7;:22;621:10651:130;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101e35760003560e01c80638da5cb5b11610102578063d16544f011610095578063f2fde38b11610064578063f2fde38b146105a4578063f9ecd01e146105c4578063fabc1cbc146105ff578063ffea632b1461061f57600080fd5b8063d16544f01461052e578063dfb0b12b1461054e578063ef0ba5d01461056e578063f26ee9d01461058e57600080fd5b8063b1538706116100d1578063b1538706146104ba578063c763e5a1146104cf578063c87c2224146104f6578063ca9b21ae146104fe57600080fd5b80638da5cb5b1461042c5780639d54f4191461044a578063a555980b1461046a578063af26c6951461049a57600080fd5b80635ac86ab71161017a57806371c544611161014957806371c54461146103a457806379e041f2146103c95780637fd4f845146103f6578063886f11951461040c57600080fd5b80635ac86ab71461031a5780635c975abb1461035a57806361bc221a14610379578063715018a61461038f57600080fd5b80631878d1f1116101b65780631878d1f11461026a57806347e7ef241461029c5780634f48eedf146102bc578063595c6a671461030557600080fd5b806301ef6966146101e857806308f42d401461020a57806310d67a2f1461022a578063136439dd1461024a575b600080fd5b3480156101f457600080fd5b506102086102033660046129dc565b61063f565b005b34801561021657600080fd5b50610208610225366004612a37565b61084c565b34801561023657600080fd5b50610208610245366004612a84565b610a15565b34801561025657600080fd5b50610208610265366004612aa1565b610ac8565b34801561027657600080fd5b5061027f600181565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102a857600080fd5b506102086102b7366004612aba565b610c07565b3480156102c857600080fd5b506102f06102d7366004612aa1565b609d602052600090815260409020805460019091015482565b60408051928352602083019190915201610293565b34801561031157600080fd5b50610208610c35565b34801561032657600080fd5b5061034a610335366004612ae6565b606654600160ff9092169190911b9081161490565b6040519015158152602001610293565b34801561036657600080fd5b506066545b604051908152602001610293565b34801561038557600080fd5b5061036b60975481565b34801561039b57600080fd5b50610208610cfc565b3480156103b057600080fd5b50609a5461027f9061010090046001600160a01b031681565b3480156103d557600080fd5b506103e96103e4366004612b09565b610d10565b6040516102939190612bdf565b34801561040257600080fd5b5061036b60985481565b34801561041857600080fd5b5060655461027f906001600160a01b031681565b34801561043857600080fd5b506033546001600160a01b031661027f565b34801561045657600080fd5b50610208610465366004612a84565b6110bd565b34801561047657600080fd5b5061034a610485366004612aa1565b609e6020526000908152604090205460ff1681565b3480156104a657600080fd5b5061036b6104b5366004612cb2565b6111bb565b3480156104c657600080fd5b506103e961120c565b3480156104db57600080fd5b50609a546104e99060ff1681565b6040516102939190612d21565b610208611257565b34801561050a57600080fd5b5061051e610519366004612aa1565b61141e565b6040516102939493929190612d34565b34801561053a57600080fd5b50610208610549366004612aba565b611490565b34801561055a57600080fd5b506102086105693660046129dc565b6116ba565b34801561057a57600080fd5b5061036b610589366004612d5d565b61188e565b34801561059a57600080fd5b5061036b60995481565b3480156105b057600080fd5b506102086105bf366004612a84565b6119ca565b3480156105d057600080fd5b506105e46105df366004612aa1565b611a40565b60408051825181526020928301519281019290925201610293565b34801561060b57600080fd5b5061020861061a366004612aa1565b611bb4565b34801561062b57600080fd5b5061020861063a366004612dfa565b611d10565b606654156106685760405162461bcd60e51b815260040161065f90612e56565b60405180910390fd5b600260d254141561068b5760405162461bcd60e51b815260040161065f90612e8d565b600260d2556000838152609d60209081526040918290208251808401909352805480845260019091015491830191909152158015906106cd5750602081015115155b61070f5760405162461bcd60e51b8152602060048201526013602482015272155b9adb9bdddb881b595c9adb19481c9bdbdd606a1b604482015260640161065f565b6000856040516020016107229190612ee5565b60408051601f198184030181529181528151602092830120888301356000908152609e90935291205490915060ff16156107925760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c1c9bd8d95cdcd959607a1b604482015260640161065f565b815160208301516000916107a591612f2d565b6107b0906001612f44565b83519091506000906107c79060208a013590612f2d565b9050866107d784838989876111bb565b146108145760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161065f565b61081d88611e89565b505050506020938401356000908152609e90945250506040909120805460ff1916600190811790915560d25550565b6066541561086c5760405162461bcd60e51b815260040161065f90612e56565b609a5461010090046001600160a01b031633146108bb5760405162461bcd60e51b815260206004820152600d60248201526c2737ba103a34329037bbb732b960991b604482015260640161065f565b6099548160200135116109105760405162461bcd60e51b815260206004820152601960248201527f557064617465206272696e6773206e6f206e6577206461746100000000000000604482015260640161065f565b60995461091f60018335612f2d565b111561096d5760405162461bcd60e51b815260206004820152601760248201527f50726576696f757320757064617465206d697373696e67000000000000000000604482015260640161065f565b8035602082013510156109b25760405162461bcd60e51b815260206004820152600d60248201526c496e76616c69642072616e676560981b604482015260640161065f565b609f8054600181019091557f0bc14066c33013fe88f66e314e4cf150b0b2d4d6451a1a51dbbd1c27cd11de28018290556000828152609d602052604090208190610a09828281358155602082013560018201555050565b50506020013560995550565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8c9190612f5c565b6001600160a01b0316336001600160a01b031614610abc5760405162461bcd60e51b815260040161065f90612f79565b610ac581611fdb565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b349190612fc3565b610b505760405162461bcd60e51b815260040161065f90612fe5565b60665481811614610bc95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c6974790000000000000000606482015260840161065f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60665415610c275760405162461bcd60e51b815260040161065f90612e56565b610c318282611490565b5050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca19190612fc3565b610cbd5760405162461bcd60e51b815260040161065f90612fe5565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b610d046120d2565b610d0e600061212c565b565b610d356040805160608101909152806000815260200160608152602001606081525090565b610d5a6040805160608101909152806000815260200160608152602001606081525090565b609a54819060ff166001811115610d7357610d73612b2b565b90816001811115610d8657610d86612b2b565b905250600080855b858111610df5576000818152609c602052604090206001015415610dbe5782610db68161302d565b935050610de3565b6000818152609b602052604090206001015415610de35781610ddf8161302d565b9250505b80610ded8161302d565b915050610d8e565b508167ffffffffffffffff811115610e0f57610e0f613048565b604051908082528060200260200182016040528015610e7557816020015b6040805160e081018252600060a0820181815260c08301829052825260208083018290529282018190526060820181905260808201528252600019909201910181610e2d5790505b5060208401528067ffffffffffffffff811115610e9457610e94613048565b604051908082528060200260200182016040528015610ef357816020015b6040805160c08101825260006080820181815260a083018290528252602080830182905292820181905260608201528252600019909201910181610eb25790505b506040840152506000905080855b8581116110b2576000818152609c602052604090206001015415610fe0576000818152609c602052604090819020815160e081019092528054829060a08201908390829060ff166001811115610f5957610f59612b2b565b6001811115610f6a57610f6a612b2b565b81526001919091015460209182015290825260028301546001600160a01b039081168383015260038401541660408301526004830154606083015260059092015460809091015285015184610fbe8161302d565b955081518110610fd057610fd061305e565b60200260200101819052506110a0565b6000818152609b60205260409020600201541561109b576000818152609b602052604090819020815160c081019092528054829060808201908390829060ff16600181111561103157611031612b2b565b600181111561104257611042612b2b565b815260019190910154602091820152908252600283015490820152600382015460ff161515604080830191909152600490920154606090910152850151836110898161302d565b945081518110610fd057610fd061305e565b6110b2565b806110aa8161302d565b915050610f01565b509195945050505050565b606654156110dd5760405162461bcd60e51b815260040161065f90612e56565b609a5461010090046001600160a01b0316331461115b5760405162461bcd60e51b815260206004820152603660248201527f4f6e6c792061637469766520757064617465722063616e206d6f7665207269676044820152751a1d1cc81d1bc818481b995dc818481858d8dbdd5b9d60521b606482015260840161065f565b609a8054610100600160a81b0319166101006001600160a01b038481168202929092179283905560405192041681527f1b0f2f500df596b42b73e80dbec6a1fb570f01978a586723f988a5fc54d773a1906020015b60405180910390a150565b600080825b63ffffffff8116156111eb576111d760028261308a565b90506111e46001836130ad565b91506111c0565b61120082888a8989600061058960018c6130d5565b98975050505050505050565b6112316040805160608101909152806000815260200160608152602001606081525090565b61125260985460016112439190612f44565b60016097546103e49190612f2d565b905090565b606654156112775760405162461bcd60e51b815260040161065f90612e56565b600034116112c75760405162461bcd60e51b815260206004820181905260248201527f6d73672076616c7565206d757374206265206772656174657220746861742030604482015260640161065f565b6040805160e081019091523390349042906000908060a0810180848152602001609760008154809291906112fa9061302d565b90915550905281526001600160a01b0386166020808301919091526001604080840182905260608401889052608090930186905283518201516000908152609c9092529190208251805182549495508594929391928492839160ff191690838181111561136957611369612b2b565b0217905550602091820151600191820155838201516002840180546001600160a01b03199081166001600160a01b039384161790915560408087015160038701805490931690841617909155606080870151600487015560809687015160059096019590955586518401518151908152918a1693820193909352918201529081018590527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa910160405180910390a150505050565b609b6020526000908152604090819020815180830190925280549091908290829060ff16600181111561145357611453612b2b565b600181111561146457611464612b2b565b815260019190910154602090910152600282015460038301546004909301549192909160ff9091169084565b606654156114b05760405162461bcd60e51b815260040161065f90612e56565b600260d25414156114d35760405162461bcd60e51b815260040161065f90612e8d565b600260d2556001600160a01b0382166115265760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b604482015260640161065f565b600081116115465760405162461bcd60e51b815260040161065f906130fa565b338261155d6001600160a01b03821683308661217e565b6040805160e0810190915242906000908060a08101808481526020016097600081548092919061158c9061302d565b90915550905281526001600160a01b0380871660208084019190915290891660408084019190915260608301899052608090920185905282518101516000908152609c909152208151805182549394508493839190829060ff1916600183818111156115fa576115fa612b2b565b021790555060209182015160019190910155828101516002830180546001600160a01b03199081166001600160a01b03938416179091556040808601516003860180549093169084161790915560608086015160048601556080958601516005909501949094558551830151815190815289831693810193909352908a16908201529081018790527fe28491c2da97a9923c92f6590a040dfc143fe636e8545356cdab0a796e1acefa910160405180910390a15050600160d25550505050565b606654156116da5760405162461bcd60e51b815260040161065f90612e56565b600260d25414156116fd5760405162461bcd60e51b815260040161065f90612e8d565b600260d2556000838152609d602090815260409182902082518084019093528054808452600190910154918301919091521580159061173f5750602081015115155b6117815760405162461bcd60e51b8152602060048201526013602482015272155b9adb9bdddb881b595c9adb19481c9bdbdd606a1b604482015260640161065f565b600085604051602001611794919061312f565b60408051601f198184030181529181528151602092830120888301356000908152609e90935291205490915060ff16156118045760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c1c9bd8d95cdcd959607a1b604482015260640161065f565b8151602083015160009161181791612f2d565b611822906001612f44565b83519091506000906118389060208a0135612f2d565b90508661184884838989876111bb565b146118855760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b210383937b7b360991b604482015260640161065f565b61081d886121ef565b600061189b600288613181565b63ffffffff16611920578163ffffffff168763ffffffff1614156118be5761197e565b858585856118cb816131a4565b965063ffffffff168181106118e2576118e261305e565b90506020020135604051602001611903929190918252602082015260400190565b60405160208183030381529060405280519060200120955061197e565b84848461192c816131a4565b955063ffffffff168181106119435761194361305e565b9050602002013586604051602001611965929190918252602082015260400190565b6040516020818303038152906040528051906020012095505b8763ffffffff16600114156119945750846119bf565b6119bc6119a260018a6130d5565b6119ad60028a61308a565b8888888861058960028a61308a565b90505b979650505050505050565b6119d26120d2565b6001600160a01b038116611a375760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161065f565b610ac58161212c565b6040805180820190915260008082526020820152609954821115611a9b5760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081c995c5d595cdd081a5960721b604482015260640161065f565b609f54611abb575050604080518082019091526000808252602082015290565b609f54600090611acd90600190612f2d565b90505b609d6000609f8381548110611ae757611ae761305e565b90600052602060002001548152602001908152602001600020600001548310158015611b465750609d6000609f8381548110611b2557611b2561305e565b90600052602060002001548152602001908152602001600020600101548311155b15611ba257609d6000609f8381548110611b6257611b6261305e565b9060005260206000200154815260200190815260200160002060405180604001604052908160008201548152602001600182015481525050915050919050565b80611bac816131c8565b915050611ad0565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2b9190612f5c565b6001600160a01b0316336001600160a01b031614611c5b5760405162461bcd60e51b815260040161065f90612f79565b606654198119606654191614611cd95760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c6974790000000000000000606482015260840161065f565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610bfc565b600054610100900460ff1615808015611d305750600054600160ff909116105b80611d4a5750303b158015611d4a575060005460ff166001145b611dad5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161065f565b6000805460ff191660011790558015611dd0576000805461ff0019166101001790555b611ddb856000612288565b611de48461212c565b6000609881905560016097819055609991909155609a8054859260ff19909116908381811115611e1657611e16612b2b565b0217905550609a8054610100600160a81b0319166101006001600160a01b038516021790558015611e82576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b5050505050565b6000611e9d60408301356060840135610d10565b9050600081604051602001611eb29190612bdf565b60408051601f19818403018152828252805160209091012060c083019091529150429060009080608081018084815260200160976000815480929190611ef79061302d565b9091555090528152602087810135818301526080880135861415604080840191909152606090920185905282518101516000908152609b909152208151805182549394508493839190829060ff191660018381811115611f5957611f59612b2b565b021790555060209182015160019091015582810151600283015560408084015160038401805491151560ff199092169190911790556060909301516004909201919091558201518282015191517fd16f202ac5905ff5d1851f4805ffe56d1212db32fa989881d0044b9cf0f7277692611e799282521515602082015260400190565b6001600160a01b0381166120695760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a40161065f565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b03163314610d0e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065f565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526121e99085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261236e565b50505050565b60016122016080830160608401612a84565b6001600160a01b0316141561221e5761221981612445565b612227565b6122278161252d565b7f935f26d94be31907080aa78b3e6e2ac6d48a072af096c20268388621bbc11789816000016020013582604051602001612261919061312f565b60408051601f198184030181528282528051602091820120938352820192909252016111b0565b6065546001600160a01b03161580156122a957506001600160a01b03821615155b61232b5760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a40161065f565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2610c3182611fdb565b60006123c3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126bc9092919063ffffffff16565b80519091501561244057808060200190518101906123e19190612fc3565b6124405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161065f565b505050565b60808101353031101561249a5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682066756e647320696e20636f6e747261637400000000604482015260640161065f565b60008160800135116124be5760405162461bcd60e51b815260040161065f906130fa565b6124db6124d16060830160408401612a84565b82608001356126d5565b7fe0495355c1e04c512584521854d222d239a4b782b39ac8a7e835a34f5ec7c1e161250c6060830160408401612a84565b604080516001600160a01b03909216825260808401356020830152016111b0565b600061253f6080830160608401612a84565b6040516370a0823160e01b81523060048201529091506080830135906001600160a01b038316906370a0823190602401602060405180830381865afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b091906131df565b10156125fe5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f7567682066756e647320696e20636f6e747261637400000000604482015260640161065f565b60008260800135116126225760405162461bcd60e51b815260040161065f906130fa565b61264a6126356060840160408501612a84565b6001600160a01b0383169060808501356127ee565b7ee763f7778b8ceef7270c89b7d1df1008b0e482da39c43831417733af96fb0d61267a6060840160408501612a84565b61268a6080850160608601612a84565b604080516001600160a01b03938416815292909116602083015260808501359082015260600160405180910390a15050565b60606126cb848460008561281e565b90505b9392505050565b804710156127255760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161065f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612772576040519150601f19603f3d011682016040523d82523d6000602084013e612777565b606091505b50509050806124405760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161065f565b6040516001600160a01b03831660248201526044810182905261244090849063a9059cbb60e01b906064016121b2565b60608247101561287f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161065f565b6001600160a01b0385163b6128d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161065f565b600080866001600160a01b031685876040516128f29190613224565b60006040518083038185875af1925050503d806000811461292f576040519150601f19603f3d011682016040523d82523d6000602084013e612934565b606091505b50915091506119bf8282866060831561294e5750816126ce565b82511561295e5782518084602001fd5b8160405162461bcd60e51b815260040161065f9190613240565b600060a0828403121561298a57600080fd5b50919050565b60008083601f8401126129a257600080fd5b50813567ffffffffffffffff8111156129ba57600080fd5b6020830191508360208260051b85010111156129d557600080fd5b9250929050565b60008060008060e085870312156129f257600080fd5b6129fc8686612978565b935060a0850135925060c085013567ffffffffffffffff811115612a1f57600080fd5b612a2b87828801612990565b95989497509550505050565b6000808284036060811215612a4b57600080fd5b833592506040601f1982011215612a6157600080fd5b506020830190509250929050565b6001600160a01b0381168114610ac557600080fd5b600060208284031215612a9657600080fd5b81356126ce81612a6f565b600060208284031215612ab357600080fd5b5035919050565b60008060408385031215612acd57600080fd5b8235612ad881612a6f565b946020939093013593505050565b600060208284031215612af857600080fd5b813560ff811681146126ce57600080fd5b60008060408385031215612b1c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b60028110610ac557634e487b7160e01b600052602160045260246000fd5b8051612b6a81612b41565b8252602090810151910152565b600081518084526020808501945080840160005b83811015612bd4578151612ba0888251612b5f565b8084015160408981019190915281015115156060808a01919091520151608088015260a09096019590820190600101612b8b565b509495945050505050565b6000602080835260808084018551612bf681612b41565b85840152858301516060604080880182905282519384905260a093928601928489019060005b81811015612c6e578551612c31848251612b5f565b808a01516001600160a01b03908116858701528582015116868501528581015189850152880151878401529488019460c090920191600101612c1c565b505089820151898203601f1901848b01529650612c8b8188612b77565b9a9950505050505050505050565b803563ffffffff81168114612cad57600080fd5b919050565b600080600080600060808688031215612cca57600080fd5b85359450612cda60208701612c99565b9350604086013567ffffffffffffffff811115612cf657600080fd5b612d0288828901612990565b9094509250612d15905060608701612c99565b90509295509295909350565b60208101612d2e83612b41565b91905290565b60a08101612d428287612b5f565b60408201949094529115156060830152608090910152919050565b600080600080600080600060c0888a031215612d7857600080fd5b612d8188612c99565b9650612d8f60208901612c99565b955060408801359450606088013567ffffffffffffffff811115612db257600080fd5b612dbe8a828b01612990565b9095509350612dd1905060808901612c99565b9150612ddf60a08901612c99565b905092959891949750929550565b60028110610ac557600080fd5b60008060008060808587031215612e1057600080fd5b8435612e1b81612a6f565b93506020850135612e2b81612a6f565b92506040850135612e3b81612ded565b91506060850135612e4b81612a6f565b939692955090935050565b6020808252601c908201527f5061757361626c653a20636f6e74726163742069732070617573656400000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b8035612ecf81612ded565b612ed881612b41565b8252602090810135910152565b60a08101612ef38284612ec4565b60408301356040830152606083013560608301526080830135608083015292915050565b634e487b7160e01b600052601160045260246000fd5b600082821015612f3f57612f3f612f17565b500390565b60008219821115612f5757612f57612f17565b500190565b600060208284031215612f6e57600080fd5b81516126ce81612a6f565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b600060208284031215612fd557600080fd5b815180151581146126ce57600080fd5b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b600060001982141561304157613041612f17565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b600063ffffffff808416806130a1576130a1613074565b92169190910492915050565b600063ffffffff8083168185168083038211156130cc576130cc612f17565b01949350505050565b600063ffffffff838116908316818110156130f2576130f2612f17565b039392505050565b6020808252818101527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f604082015260600190565b60a0810161313d8284612ec4565b604083013561314b81612a6f565b6001600160a01b03908116604084015260608401359061316a82612a6f565b166060830152608092830135929091019190915290565b600063ffffffff8084168061319857613198613074565b92169190910692915050565b600063ffffffff808316818114156131be576131be612f17565b6001019392505050565b6000816131d7576131d7612f17565b506000190190565b6000602082840312156131f157600080fd5b5051919050565b60005b838110156132135781810151838201526020016131fb565b838111156121e95750506000910152565b600082516132368184602087016131f8565b9190910192915050565b602081526000825180602084015261325f8160408501602087016131f8565b601f01601f1916919091016040019291505056fea2646970667358221220710f213ee09bce253ec1f0230f68c4530d2e6fbaa056d33eb600dd60b71fdb8b64736f6c634300080c0033","sourceMap":"621:10651:130:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6305:762;;;;;;;;;;-1:-1:-1;6305:762:130;;;;;:::i;:::-;;:::i;:::-;;7257:578;;;;;;;;;;-1:-1:-1;7257:578:130;;;;;:::i;:::-;;:::i;5826:138:58:-;;;;;;;;;;-1:-1:-1;5826:138:58;;;;;:::i;:::-;;:::i;3832:392::-;;;;;;;;;;-1:-1:-1;3832:392:58;;;;;:::i;:::-;;:::i;779:94:130:-;;;;;;;;;;;;831:42;779:94;;;;;-1:-1:-1;;;;;2319:32:138;;;2301:51;;2289:2;2274:18;779:94:130;;;;;;;;3422:128;;;;;;;;;;-1:-1:-1;3422:128:130;;;;;:::i;:::-;;:::i;1075:48:131:-;;;;;;;;;;-1:-1:-1;1075:48:131;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;3059:25:138;;;3115:2;3100:18;;3093:34;;;;3032:18;1075:48:131;2885:248:138;4299:136:58;;;;;;;;;;;;;:::i;5606:149::-;;;;;;;;;;-1:-1:-1;5606:149:58;;;;;:::i;:::-;5724:7;;5695:1;:10;;;;;;;;5724:14;;;5723:24;;5606:149;;;;3577:14:138;;3570:22;3552:41;;3540:2;3525:18;5606:149:58;3412:187:138;5418:87:58;;;;;;;;;;-1:-1:-1;5491:7:58;;5418:87;;;3750:25:138;;;3738:2;3723:18;5418:87:58;3604:177:138;174:22:131;;;;;;;;;;;;;;;;2071:101:0;;;;;;;;;;;;;:::i;592:29:131:-;;;;;;;;;;-1:-1:-1;592:29:131;;;;;;;-1:-1:-1;;;;;592:29:131;;;9998:1272:130;;;;;;;;;;-1:-1:-1;9998:1272:130;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;299:44:131:-;;;;;;;;;;;;;;;;1825:37:58;;;;;;;;;;-1:-1:-1;1825:37:58;;;;-1:-1:-1;;;;;1825:37:58;;;1441:85:0;;;;;;;;;;-1:-1:-1;1513:6:0;;-1:-1:-1;;;;;1513:6:0;1441:85;;2341:244:130;;;;;;;;;;-1:-1:-1;2341:244:130;;;;;:::i;:::-;;:::i;1132:51:131:-;;;;;;;;;;-1:-1:-1;1132:51:131;;;;;:::i;:::-;;;;;;;;;;;;;;;;927:373:130;;;;;;;;;;-1:-1:-1;927:373:130;;;;;:::i;:::-;;:::i;4562:166::-;;;;;;;;;;;;;:::i;539:20:131:-;;;;;;;;;;-1:-1:-1;539:20:131;;;;;;;;;;;;;;;:::i;2591:825:130:-;;;:::i;727:61:131:-;;;;;;;;;;-1:-1:-1;727:61:131;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;3556:1000:130:-;;;;;;;;;;-1:-1:-1;3556:1000:130;;;;;:::i;:::-;;:::i;4952:806::-;;;;;;;;;;-1:-1:-1;4952:806:130;;;;;:::i;:::-;;:::i;1306:603::-;;;;;;;;;;-1:-1:-1;1306:603:130;;;;;:::i;:::-;;:::i;462:44:131:-;;;;;;;;;;;;;;;;2321:198:0;;;;;;;;;;-1:-1:-1;2321:198:0;;;;;:::i;:::-;;:::i;5764:535:130:-;;;;;;;;;;-1:-1:-1;5764:535:130;;;;;:::i;:::-;;:::i;:::-;;;;10804:13:138;;10786:32;;10874:4;10862:17;;;10856:24;10834:20;;;10827:54;;;;10759:18;5764:535:130;10592:295:138;4911:437:58;;;;;;;;;;-1:-1:-1;4911:437:58;;;;;:::i;:::-;;:::i;1915:420:130:-;;;;;;;;;;-1:-1:-1;1915:420:130;;;;;:::i;:::-;;:::i;6305:762::-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;;;;;;;;;1744:1:17::1;2325:7;;:19;;2317:63;;;;-1:-1:-1::0;;;2317:63:17::1;;;;;;;:::i;:::-;1744:1;2455:7;:18:::0;6442:14:130::2;6459:28:::0;;;:15:::2;:28;::::0;;;;;;;;6442:45;;;;::::2;::::0;;;;;;;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;6505:12;;::::2;::::0;:26:::2;;-1:-1:-1::0;6521:5:130::2;::::0;::::2;::::0;:10;::::2;6505:26;6497:58;;;::::0;-1:-1:-1;;;6497:58:130;;12691:2:138;6497:58:130::2;::::0;::::2;12673:21:138::0;12730:2;12710:18;;;12703:30;-1:-1:-1;;;12749:18:138;;;12742:49;12808:18;;6497:58:130::2;12489:343:138::0;6497:58:130::2;6567:19;6610:6;6599:18;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;6599:18:130;;::::2;::::0;;;;;;6589:29;;6599:18:::2;6589:29:::0;;::::2;::::0;6656:19;;::::2;;6636:40;::::0;;;:19:::2;:40:::0;;;;;;6589:29;;-1:-1:-1;6636:40:130::2;;:49;6628:79;;;::::0;-1:-1:-1;;;6628:79:130;;13813:2:138;6628:79:130::2;::::0;::::2;13795:21:138::0;13852:2;13832:18;;;13825:30;-1:-1:-1;;;13871:18:138;;;13864:47;13928:18;;6628:79:130::2;13611:341:138::0;6628:79:130::2;6754:7:::0;;6746:5:::2;::::0;::::2;::::0;6717:19:::2;::::0;6746:15:::2;::::0;::::2;:::i;:::-;:19;::::0;6764:1:::2;6746:19;:::i;:::-;6796:7:::0;;6717:49;;-1:-1:-1;6776:10:130::2;::::0;6796:29:::2;::::0;6806:19:::2;::::0;::::2;;::::0;6796:29:::2;:::i;:::-;6776:50;;6912:11;6855:53;6870:11;6883:3;6888:5;;6895:12;6855:14;:53::i;:::-;:68;6836:124;;;::::0;-1:-1:-1;;;6836:124:130;;14554:2:138;6836:124:130::2;::::0;::::2;14536:21:138::0;14593:2;14573:18;;;14566:30;-1:-1:-1;;;14612:18:138;;;14605:43;14665:18;;6836:124:130::2;14352:337:138::0;6836:124:130::2;6970:33;6996:6;6970:25;:33::i;:::-;-1:-1:-1::0;;;;7033:19:130::2;::::0;;::::2;;7013:40;::::0;;;:19:::2;:40:::0;;;-1:-1:-1;;7013:40:130;;;;:47;;-1:-1:-1;;7013:47:130::2;7056:4;7013:47:::0;;::::2;::::0;;;2628:7:17::1;:22:::0;-1:-1:-1;6305:762:130:o;7257:578::-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;7423:14:130::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;7423:14:130::1;7409:10;:28;7401:54;;;::::0;-1:-1:-1;;;7401:54:130;;14896:2:138;7401:54:130::1;::::0;::::1;14878:21:138::0;14935:2;14915:18;;;14908:30;-1:-1:-1;;;14954:18:138;;;14947:43;15007:18;;7401:54:130::1;14694:337:138::0;7401:54:130::1;7485:29;;7473:5;:9;;;:41;7465:79;;;::::0;-1:-1:-1;;;7465:79:130;;15238:2:138;7465:79:130::1;::::0;::::1;15220:21:138::0;15277:2;15257:18;;;15250:30;15316:27;15296:18;;;15289:55;15361:18;;7465:79:130::1;15036:349:138::0;7465:79:130::1;7581:29;::::0;7562:15:::1;7576:1;7562:11:::0;::::1;:15;:::i;:::-;:48;;7554:84;;;::::0;-1:-1:-1;;;7554:84:130;;15592:2:138;7554:84:130::1;::::0;::::1;15574:21:138::0;15631:2;15611:18;;;15604:30;15670:25;15650:18;;;15643:53;15713:18;;7554:84:130::1;15390:347:138::0;7554:84:130::1;7669:11:::0;::::1;7656:9;::::0;::::1;;:24;;7648:50;;;::::0;-1:-1:-1;;;7648:50:130;;15944:2:138;7648:50:130::1;::::0;::::1;15926:21:138::0;15983:2;15963:18;;;15956:30;-1:-1:-1;;;16002:18:138;;;15995:43;16055:18;;7648:50:130::1;15742:337:138::0;7648:50:130::1;7708:5;:23:::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;-1:-1:-1;7741:28:130;;;:15:::1;7708:23;7741:28:::0;;;;7772:5;;7741:36:::1;7772:5:::0;7741:28;16245:5:138;16232:19;16226:4;16219:33;16306:2;16299:5;16295:14;16282:28;16278:1;16272:4;16268:12;16261:50;;;16084:233;7741:36:130::1;-1:-1:-1::0;;7819:9:130::1;;;7787:29;:41:::0;-1:-1:-1;7257:578:130:o;5826:138:58:-;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:58;-1:-1:-1;;;;;2285:23:58;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:58;:10;-1:-1:-1;;;;;2271:39:58;;2263:94;;;;-1:-1:-1;;;2263:94:58;;;;;;;:::i;:::-;5920:37:::1;5939:17;5920:18;:37::i;:::-;5826:138:::0;:::o;3832:392::-;2125:14;;:35;;-1:-1:-1;;;2125:35:58;;2149:10;2125:35;;;2301:51:138;-1:-1:-1;;;;;2125:14:58;;;;:23;;2274:18:138;;2125:35:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:58;;;;;;;:::i;:::-;4064:7:::1;::::0;4034:25;;::::1;4033:38;4025:107;;;::::0;-1:-1:-1;;;4025:107:58;;17899:2:138;4025:107:58::1;::::0;::::1;17881:21:138::0;17938:2;17918:18;;;17911:30;17977:34;17957:18;;;17950:62;18048:26;18028:18;;;18021:54;18092:19;;4025:107:58::1;17697:420:138::0;4025:107:58::1;4142:7;:25:::0;;;4182:35:::1;::::0;3750:25:138;;;4189:10:58::1;::::0;4182:35:::1;::::0;3738:2:138;3723:18;4182:35:58::1;;;;;;;;3832:392:::0;:::o;3422:128:130:-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;3508:35:130::1;3522:12;3536:6;3508:13;:35::i;:::-;3422:128:::0;;:::o;4299:136:58:-;2125:14;;:35;;-1:-1:-1;;;2125:35:58;;2149:10;2125:35;;;2301:51:138;-1:-1:-1;;;;;2125:14:58;;;;:23;;2274:18:138;;2125:35:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2117:88;;;;-1:-1:-1;;;2117:88:58;;;;;;;:::i;:::-;-1:-1:-1;;4349:7:58::1;:27:::0;;;4391:37:::1;::::0;3750:25:138;;;4398:10:58::1;::::0;4391:37:::1;::::0;3738:2:138;3723:18;4391:37:58::1;;;;;;;4299:136::o:0;2071:101:0:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;9998:1272:130:-;10097:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;10097:15:130;10124:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;10124:22:130;10172:5;;10157:6;;10172:5;;;10157:20;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;10187:23:130;;10286:5;10261:287;10306:3;10293:9;:16;10261:287;;10342:19;;;;:8;:19;;;;;:32;;;:37;10338:200;;10399:17;;;;:::i;:::-;;;;10338:200;;;10441:28;;;;:17;:28;;;;;:41;;;:46;10437:101;;10507:16;;;;:::i;:::-;;;;10437:101;10311:11;;;;:::i;:::-;;;;10261:287;;;;10597:15;10583:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10583:30:130;;-1:-1:-1;;10583:30:130;;;;;;;;;;;-1:-1:-1;10558:22:130;;;:55;10680:14;10657:38;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10657:38:130;;-1:-1:-1;;10657:38:130;;;;;;;;;;;-1:-1:-1;10623:31:130;;;:72;-1:-1:-1;10724:1:130;;-1:-1:-1;10724:1:130;10789:5;10764:476;10809:3;10796:9;:16;10764:476;;10880:1;10845:19;;;:8;:19;;;;;:32;;;:36;10841:389;;10945:19;;;;:8;:19;;;;;;;10901:63;;;;;;;;;;;;;;;;10945:19;;10901:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10901:63:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;10924:17;;;;:::i;:::-;;;10901:41;;;;;;;;:::i;:::-;;;;;;:63;;;;10841:389;;;11032:1;10989:28;;;:17;:28;;;;;:40;;;:44;10985:245;;11143:28;;;;:17;:28;;;;;;;11053:118;;;;;;;;;;;;;;;;11143:28;;11053:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;11106:16;;;;:::i;:::-;;;11053:87;;;;;;;;:::i;10985:245::-;11210:5;;10985:245;10814:11;;;;:::i;:::-;;;;10764:476;;;-1:-1:-1;11257:6:130;;9998:1272;-1:-1:-1;;;;;9998:1272:130:o;2341:244::-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;2431:14:130::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;2431:14:130::1;2417:10;:28;2409:95;;;::::0;-1:-1:-1;;;2409:95:130;;18728:2:138;2409:95:130::1;::::0;::::1;18710:21:138::0;18767:2;18747:18;;;18740:30;18806:34;18786:18;;;18779:62;-1:-1:-1;;;18857:18:138;;;18850:52;18919:19;;2409:95:130::1;18526:418:138::0;2409:95:130::1;2512:14;:24:::0;;-1:-1:-1;;;;;;2512:24:130::1;;-1:-1:-1::0;;;;;2512:24:130;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;2549:29:::1;::::0;2563:14;::::1;;2301:51:138::0;;2549:29:130::1;::::0;2289:2:138;2274:18;2549:29:130::1;;;;;;;;2341:244:::0;:::o;927:373::-;1057:7;;1112:12;1132:69;1139:7;;;;1132:69;;1164:7;1170:1;1164:3;:7;:::i;:::-;1158:13;-1:-1:-1;1181:11:130;1191:1;1181:11;;:::i;:::-;;;1132:69;;;1215:78;1235:6;1243:9;1254:10;1266:5;;1273:1;1276:16;1291:1;1276:12;:16;:::i;1215:78::-;1208:85;927:373;-1:-1:-1;;;;;;;;927:373:130:o;4562:166::-;4609:15;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;4609:15:130;4655:66;4674:29;;4706:1;4674:33;;;;:::i;:::-;4719:1;4709:7;;:11;;;;:::i;4655:66::-;4636:85;;4562:166;:::o;2591:825::-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;2678:1:130::1;2666:9;:13;2658:58;;;::::0;-1:-1:-1;;;2658:58:130;;19938:2:138;2658:58:130::1;::::0;::::1;19920:21:138::0;;;19957:18;;;19950:30;20016:34;19996:18;;;19989:62;20068:18;;2658:58:130::1;19736:356:138::0;2658:58:130::1;2884:244;::::0;;2917:45;;;;;;2753:10:::1;::::0;2787:9:::1;::::0;2827:15:::1;::::0;2726:24:::1;::::0;2884:244;::::1;::::0;::::1;::::0;2726:24;2917:45:::1;;;;2951:7;;:9;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;2917:45:130;;2884:244;;-1:-1:-1;;;;;2884:244:130;::::1;;::::0;;::::1;::::0;;;;831:42:::1;2884:244:::0;;;;;;;;;;;;;;;;;;;;3193:24;;:27;::::1;::::0;-1:-1:-1;3184:37:130;;;:8:::1;:37:::0;;;;;;:54;;;;;;2852:276;;-1:-1:-1;2852:276:130;;3184:37;;:54;;:37;;;;-1:-1:-1;;3184:54:130::1;::::0;;;;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;3184:54:130::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;;3184:54:130;;::::1;-1:-1:-1::0;;;;;3184:54:130;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;;3291:24;;:27;::::1;::::0;3253:156;;20328:25:138;;;20427:15;;;20407:18;;;20400:43;;;;20459:18;;;20452:43;20511:18;;;20504:34;;;3253:156:130::1;::::0;20300:19:138;3253:156:130::1;;;;;;;2648:768;;;;2591:825::o:0;727:61:131:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3556:1000:130:-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;1744:1:17::1;2325:7;;:19;;2317:63;;;;-1:-1:-1::0;;;2317:63:17::1;;;;;;;:::i;:::-;1744:1;2455:7;:18:::0;-1:-1:-1;;;;;3669:26:130;::::2;3661:60;;;::::0;-1:-1:-1;;;3661:60:130;;20751:2:138;3661:60:130::2;::::0;::::2;20733:21:138::0;20790:2;20770:18;;;20763:30;-1:-1:-1;;;20809:18:138;;;20802:51;20870:18;;3661:60:130::2;20549:345:138::0;3661:60:130::2;3748:1;3739:6;:10;3731:55;;;;-1:-1:-1::0;;;3731:55:130::2;;;;;;;:::i;:::-;3823:10;3866:12:::0;3889:57:::2;-1:-1:-1::0;;;;;3889:22:130;::::2;3823:10:::0;3932:4:::2;3939:6:::0;3889:22:::2;:57::i;:::-;4034:239;::::0;;4067:45;;;;;;3977:15:::2;::::0;3957:17:::2;::::0;4034:239;::::2;::::0;::::2;::::0;3957:17;4067:45:::2;;;;4101:7;;:9;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;4067:45:130;;4034:239;;-1:-1:-1;;;;;4034:239:130;;::::2;;::::0;;::::2;::::0;;;;;;::::2;::::0;;;;;;;;;;;;;;;;;;;;;4338:24;;:27;::::2;::::0;-1:-1:-1;4329:37:130;;;:8:::2;:37:::0;;;;:54;;;;;;4002:271;;-1:-1:-1;4002:271:130;;4329:37;;:54;:37;;-1:-1:-1;;4329:54:130::2;::::0;;;;::::2;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;4329:54:130::2;::::0;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;;4329:54:130;;::::2;-1:-1:-1::0;;;;;4329:54:130;;::::2;;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;::::2;;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;::::0;;;;4436:24;;:27;::::2;::::0;4398:151;;20328:25:138;;;20427:15;;;20407:18;;;20400:43;;;;20479:15;;;20459:18;;;20452:43;20511:18;;;20504:34;;;4398:151:130::2;::::0;20300:19:138;4398:151:130::2;;;;;;;-1:-1:-1::0;;1701:1:17::1;2628:7;:22:::0;-1:-1:-1;;;;3556:1000:130:o;4952:806::-;2528:7:58;;:12;2520:53;;;;-1:-1:-1;;;2520:53:58;;;;;;;:::i;:::-;1744:1:17::1;2325:7;;:19;;2317:63;;;;-1:-1:-1::0;;;2317:63:17::1;;;;;;;:::i;:::-;1744:1;2455:7;:18:::0;5101:14:130::2;5118:28:::0;;;:15:::2;:28;::::0;;;;;;;;5101:45;;;;::::2;::::0;;;;;;;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;5164:12;;::::2;::::0;:26:::2;;-1:-1:-1::0;5180:5:130::2;::::0;::::2;::::0;:10;::::2;5164:26;5156:58;;;::::0;-1:-1:-1;;;5156:58:130;;12691:2:138;5156:58:130::2;::::0;::::2;12673:21:138::0;12730:2;12710:18;;;12703:30;-1:-1:-1;;;12749:18:138;;;12742:49;12808:18;;5156:58:130::2;12489:343:138::0;5156:58:130::2;5226:23;5273:10;5262:22;;;;;;;;:::i;:::-;;::::0;;-1:-1:-1;;5262:22:130;;::::2;::::0;;;;;;5252:33;;5262:22:::2;5252:33:::0;;::::2;::::0;5323:23;;::::2;;5303:44;::::0;;;:19:::2;:44:::0;;;;;;5252:33;;-1:-1:-1;5303:44:130::2;;:53;5295:83;;;::::0;-1:-1:-1;;;5295:83:130;;13813:2:138;5295:83:130::2;::::0;::::2;13795:21:138::0;13852:2;13832:18;;;13825:30;-1:-1:-1;;;13871:18:138;;;13864:47;13928:18;;5295:83:130::2;13611:341:138::0;5295:83:130::2;5426:7:::0;;5418:5:::2;::::0;::::2;::::0;5389:19:::2;::::0;5418:15:::2;::::0;::::2;:::i;:::-;:19;::::0;5436:1:::2;5418:19;:::i;:::-;5494:7:::0;;5389:49;;-1:-1:-1;5448:10:130::2;::::0;5468:33:::2;::::0;:23:::2;::::0;::::2;;:33;:::i;:::-;5448:54;;5592:11;5531:57;5546:15;5563:3;5568:5;;5575:12;5531:14;:57::i;:::-;:72;5512:128;;;::::0;-1:-1:-1;;;5512:128:130;;14554:2:138;5512:128:130::2;::::0;::::2;14536:21:138::0;14593:2;14573:18;;;14566:30;-1:-1:-1;;;14612:18:138;;;14605:43;14665:18;;5512:128:130::2;14352:337:138::0;5512:128:130::2;5650:40;5679:10;5650:28;:40::i;1306:603::-:0;1459:7;1480;1486:1;1480:3;:7;:::i;:::-;:12;;1476:270;;1515:9;1508:16;;:3;:16;;;1504:148;;;1476:270;;1504:148;1614:4;1620:6;;1627:11;;;;:::i;:::-;;;1620:19;;;;;;;;;:::i;:::-;;;;;;;1597:43;;;;;;;;22524:19:138;;;22568:2;22559:12;;22552:28;22605:2;22596:12;;22367:247;1597:43:130;;;;;;;;;;;;;1587:54;;;;;;1580:61;;1476:270;;;1710:6;;1717:11;;;;:::i;:::-;;;1710:19;;;;;;;;;:::i;:::-;;;;;;;1731:4;1693:43;;;;;;;;22524:19:138;;;22568:2;22559:12;;22552:28;22605:2;22596:12;;22367:247;1693:43:130;;;;;;;;;;;;;1683:54;;;;;;1676:61;;1476:270;1758:5;:10;;1767:1;1758:10;1754:149;;;-1:-1:-1;1787:4:130;1780:11;;1754:149;1821:73;1841:7;1847:1;1841:5;:7;:::i;:::-;1850:5;1854:1;1850:3;:5;:::i;:::-;1857:4;1863:6;;1871:9;1882:11;1892:1;1882:9;:11;:::i;1821:73::-;1814:80;;1754:149;1306:603;;;;;;;;;:::o;2321:198:0:-;1334:13;:11;:13::i;:::-;-1:-1:-1;;;;;2409:22:0;::::1;2401:73;;;::::0;-1:-1:-1;;;2401:73:0;;22821:2:138;2401:73:0::1;::::0;::::1;22803:21:138::0;22860:2;22840:18;;;22833:30;22899:34;22879:18;;;22872:62;-1:-1:-1;;;22950:18:138;;;22943:36;22996:19;;2401:73:0::1;22619:402:138::0;2401:73:0::1;2484:28;2503:8;2484:18;:28::i;5764:535:130:-:0;-1:-1:-1;;;;;;;;;;;;;;;;;5872:29:130;;5859:9;:42;;5851:73;;;;-1:-1:-1;;;5851:73:130;;23228:2:138;5851:73:130;;;23210:21:138;23267:2;23247:18;;;23240:30;-1:-1:-1;;;23286:18:138;;;23279:48;23344:18;;5851:73:130;23026:342:138;5851:73:130;5938:5;:12;5934:80;;-1:-1:-1;;5978:25:130;;;;;;;;;-1:-1:-1;5978:25:130;;;;;;;;5764:535::o;5934:80::-;6041:5;:12;6029:9;;6041:16;;6056:1;;6041:16;:::i;:::-;6029:28;;6024:226;6102:15;:25;6118:5;6124:1;6118:8;;;;;;;;:::i;:::-;;;;;;;;;6102:25;;;;;;;;;;;:31;;;6089:9;:44;;:90;;;;;6150:15;:25;6166:5;6172:1;6166:8;;;;;;;;:::i;:::-;;;;;;;;;6150:25;;;;;;;;;;;:29;;;6137:9;:42;;6089:90;6084:156;;;6202:15;:25;6218:5;6224:1;6218:8;;;;;;;;:::i;:::-;;;;;;;;;6202:25;;;;;;;;;;;6195:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;5764:535;;;:::o;6084:156::-;6067:3;;;;:::i;:::-;;;;6024:226;;4911:437:58;2285:14;;;;;;;;;-1:-1:-1;;;;;2285:14:58;-1:-1:-1;;;;;2285:23:58;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2271:39:58;:10;-1:-1:-1;;;;;2271:39:58;;2263:94;;;;-1:-1:-1;;;2263:94:58;;;;;;;:::i;:::-;5164:7:::1;;5163:8;5141:15;5140:16;5128:7;;5127:8;5126:31;5125:47;5104:150;;;::::0;-1:-1:-1;;;5104:150:58;;23716:2:138;5104:150:58::1;::::0;::::1;23698:21:138::0;23755:2;23735:18;;;23728:30;23794:34;23774:18;;;23767:62;23865:26;23845:18;;;23838:54;23909:19;;5104:150:58::1;23514:420:138::0;5104:150:58::1;5264:7;:25:::0;;;5304:37:::1;::::0;3750:25:138;;;5313:10:58::1;::::0;5304:37:::1;::::0;3738:2:138;3723:18;5304:37:58::1;3604:177:138::0;1915:420:130;3111:19:1;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:1;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:1;1476:19:3;:23;;;3219:66:1;;-1:-1:-1;3268:12:1;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:1;;24141:2:138;3157:201:1;;;24123:21:138;24180:2;24160:18;;;24153:30;24219:34;24199:18;;;24192:62;-1:-1:-1;;;24270:18:138;;;24263:44;24324:19;;3157:201:1;23939:410:138;3157:201:1;3368:12;:16;;-1:-1:-1;;3368:16:1;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:1;;;;;3394:65;2073:47:130::1;2091:15;2000:1:58;2073:17:130;:47::i;:::-;2130:32;2149:12;2130:18;:32::i;:::-;2204:1;2172:29;:33:::0;;;2225:1:::1;2215:7;:11:::0;;;2236:29:::1;:33:::0;;;;2279:5:::1;:15:::0;;2287:7;;-1:-1:-1;;2279:15:130;;::::1;::::0;2287:7;2279:15;;::::1;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;2304:14:130::1;:24:::0;;-1:-1:-1;;;;;;2304:24:130::1;;-1:-1:-1::0;;;;;2304:24:130;::::1;;;::::0;;3479:99:1;;;;3529:5;3513:21;;-1:-1:-1;;3513:21:1;;;3553:14;;-1:-1:-1;24506:36:138;;3553:14:1;;24494:2:138;24479:18;3553:14:1;;;;;;;;3479:99;3101:483;1915:420:130;;;;:::o;7841:793::-;7918:23;7944:90;7976:12;;;:18;8008:16;;;;7944:18;:90::i;:::-;7918:116;;8044:20;8088:7;8077:19;;;;;;;;:::i;:::-;;;;-1:-1:-1;;8077:19:130;;;;;;;;;8067:30;;8077:19;8067:30;;;;8232:45;;;;;;8067:30;-1:-1:-1;8127:15:130;;8107:17;;8077:19;8190:236;;;;8107:17;8232:45;;;;8266:7;;:9;;;;;;;;;:::i;:::-;;;;-1:-1:-1;8232:45:130;;8190:236;;;8304:19;;;;8190:236;;;;8370:11;;;;8354:27;;;8190:236;;;;;;;;;;;;;;;8455:20;;:23;;;8304:16;8437:42;;;:17;:42;;;;:55;;;;;;8153:273;;-1:-1:-1;8153:273:130;;8437:42;;:55;:42;;-1:-1:-1;;8437:55:130;;;;;;;;;;;:::i;:::-;;;;;-1:-1:-1;8437:55:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8437:55:130;;;;;;;;;;;;;;;;;;;;;;8555:22;;;8591:26;;;;8507:120;;;;;;24721:25:138;;24789:14;24782:22;24777:2;24762:18;;24755:50;24709:2;24694:18;;24553:258;6024:360:58;-1:-1:-1;;;;;6127:40:58;;6106:160;;;;-1:-1:-1;;;6106:160:58;;25018:2:138;6106:160:58;;;25000:21:138;25057:2;25037:18;;;25030:30;25096:34;25076:18;;;25069:62;25167:34;25147:18;;;25140:62;-1:-1:-1;;;25218:19:138;;;25211:40;25268:19;;6106:160:58;24816:477:138;6106:160:58;6299:14;;6281:52;;;-1:-1:-1;;;;;6299:14:58;;;25558:34:138;;25628:15;;;25623:2;25608:18;;25601:43;6281:52:58;;25493:18:138;6281:52:58;;;;;;;6343:14;:34;;-1:-1:-1;;;;;;6343:34:58;-1:-1:-1;;;;;6343:34:58;;;;;;;;;;6024:360::o;1599:130:0:-;1513:6;;-1:-1:-1;;;;;1513:6:0;929:10:4;1662:23:0;1654:68;;;;-1:-1:-1;;;1654:68:0;;25857:2:138;1654:68:0;;;25839:21:138;;;25876:18;;;25869:30;25935:34;25915:18;;;25908:62;25987:18;;1654:68:0;25655:356:138;2673:187:0;2765:6;;;-1:-1:-1;;;;;2781:17:0;;;-1:-1:-1;;;;;;2781:17:0;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;974:241:24:-;1139:68;;-1:-1:-1;;;;;26274:15:138;;;1139:68:24;;;26256:34:138;26326:15;;26306:18;;;26299:43;26358:18;;;26351:34;;;1112:96:24;;1132:5;;-1:-1:-1;;;1162:27:24;26191:18:138;;1139:68:24;;;;-1:-1:-1;;1139:68:24;;;;;;;;;;;;;;-1:-1:-1;;;;;1139:68:24;-1:-1:-1;;;;;;1139:68:24;;;;;;;;;;1112:19;:96::i;:::-;974:241;;;;:::o;8640:401:130:-;831:42;8733:23;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8733:44:130;;8729:183;;;8792:34;8815:10;8792:22;:34::i;:::-;8729:183;;;8865:36;8890:10;8865:24;:36::i;:::-;8927:106;8955:10;:20;;:23;;;9011:10;9000:22;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9000:22:130;;;;;;;;;8990:33;;9000:22;8990:33;;;;3059:25:138;;;3100:18;;3093:34;;;;3032:18;8927:106:130;2885:248:138;2943:441:58;3077:14;;-1:-1:-1;;;;;3077:14:58;3069:37;:79;;;;-1:-1:-1;;;;;;3110:38:58;;;;3069:79;3048:197;;;;-1:-1:-1;;;3048:197:58;;26851:2:138;3048:197:58;;;26833:21:138;26890:2;26870:18;;;26863:30;26929:34;26909:18;;;26902:62;27000:34;26980:18;;;26973:62;-1:-1:-1;;;27051:19:138;;;27044:38;27099:19;;3048:197:58;26649:475:138;3048:197:58;3255:7;:26;;;3296:36;;3750:25:138;;;3303:10:58;;3296:36;;3738:2:138;3723:18;3296:36:58;;;;;;;3342:35;3361:15;3342:18;:35::i;3747:706:24:-;4166:23;4192:69;4220:4;4192:69;;;;;;;;;;;;;;;;;4200:5;-1:-1:-1;;;;;4192:27:24;;;:69;;;;;:::i;:::-;4275:17;;4166:95;;-1:-1:-1;4275:21:24;4271:176;;4370:10;4359:30;;;;;;;;;;;;:::i;:::-;4351:85;;;;-1:-1:-1;;;4351:85:24;;27331:2:138;4351:85:24;;;27313:21:138;27370:2;27350:18;;;27343:30;27409:34;27389:18;;;27382:62;-1:-1:-1;;;27460:18:138;;;27453:40;27510:19;;4351:85:24;27129:406:138;4351:85:24;3817:636;3747:706;;:::o;9047:412:130:-;9172:17;;;;9154:4;9138:30;:51;;9130:92;;;;-1:-1:-1;;;9130:92:130;;27742:2:138;9130:92:130;;;27724:21:138;27781:2;27761:18;;;27754:30;27820;27800:18;;;27793:58;27868:18;;9130:92:130;27540:352:138;9130:92:130;9260:1;9240:10;:17;;;:21;9232:66;;;;-1:-1:-1;;;9232:66:130;;;;;;;:::i;:::-;9308:67;9334:20;;;;;;;;:::i;:::-;9357:10;:17;;;9308;:67::i;:::-;9390:62;9412:20;;;;;;;;:::i;:::-;9390:62;;;-1:-1:-1;;;;;28089:32:138;;;28071:51;;9434:17:130;;;;28153:2:138;28138:18;;28131:34;28044:18;9390:62:130;27897:274:138;9465:527:130;9550:12;9572:23;;;;;;;;:::i;:::-;9614:30;;-1:-1:-1;;;9614:30:130;;9638:4;9614:30;;;2301:51:138;9550:46:130;;-1:-1:-1;9648:17:130;;;;;-1:-1:-1;;;;;9614:15:130;;;;;2274:18:138;;9614:30:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;9606:92;;;;-1:-1:-1;;;9606:92:130;;27742:2:138;9606:92:130;;;27724:21:138;27781:2;27761:18;;;27754:30;27820;27800:18;;;27793:58;27868:18;;9606:92:130;27540:352:138;9606:92:130;9736:1;9716:10;:17;;;:21;9708:66;;;;-1:-1:-1;;;9708:66:130;;;;;;;:::i;:::-;9785:59;9804:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9785:18:130;;;9826:17;;;;9785:18;:59::i;:::-;9859:126;9891:20;;;;;;;;:::i;:::-;9923:23;;;;;;;;:::i;:::-;9859:126;;;-1:-1:-1;;;;;26274:15:138;;;26256:34;;26326:15;;;;26321:2;26306:18;;26299:43;9958:17:130;;;;26358:18:138;;;26351:34;26206:2;26191:18;9859:126:130;;;;;;;9540:452;9465:527;:::o;3861:223:25:-;3994:12;4025:52;4047:6;4055:4;4061:1;4064:12;4025:21;:52::i;:::-;4018:59;;3861:223;;;;;;:::o;2412:312::-;2526:6;2501:21;:31;;2493:73;;;;-1:-1:-1;;;2493:73:25;;28567:2:138;2493:73:25;;;28549:21:138;28606:2;28586:18;;;28579:30;28645:31;28625:18;;;28618:59;28694:18;;2493:73:25;28365:353:138;2493:73:25;2578:12;2596:9;-1:-1:-1;;;;;2596:14:25;2618:6;2596:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2577:52;;;2647:7;2639:78;;;;-1:-1:-1;;;2639:78:25;;29135:2:138;2639:78:25;;;29117:21:138;29174:2;29154:18;;;29147:30;29213:34;29193:18;;;29186:62;29284:28;29264:18;;;29257:56;29330:19;;2639:78:25;28933:422:138;763:205:24;902:58;;-1:-1:-1;;;;;28089:32:138;;902:58:24;;;28071:51:138;28138:18;;;28131:34;;;875:86:24;;895:5;;-1:-1:-1;;;925:23:24;28044:18:138;;902:58:24;27897:274:138;4948:499:25;5113:12;5170:5;5145:21;:30;;5137:81;;;;-1:-1:-1;;;5137:81:25;;29562:2:138;5137:81:25;;;29544:21:138;29601:2;29581:18;;;29574:30;29640:34;29620:18;;;29613:62;-1:-1:-1;;;29691:18:138;;;29684:36;29737:19;;5137:81:25;29360:402:138;5137:81:25;-1:-1:-1;;;;;1476:19:3;;;5228:60:25;;;;-1:-1:-1;;;5228:60:25;;29969:2:138;5228:60:25;;;29951:21:138;30008:2;29988:18;;;29981:30;30047:31;30027:18;;;30020:59;30096:18;;5228:60:25;29767:353:138;5228:60:25;5300:12;5314:23;5341:6;-1:-1:-1;;;;;5341:11:25;5360:5;5367:4;5341:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5299:73;;;;5389:51;5406:7;5415:10;5427:12;7707;7735:7;7731:566;;;-1:-1:-1;7765:10:25;7758:17;;7731:566;7876:17;;:21;7872:415;;8120:10;8114:17;8180:15;8167:10;8163:2;8159:19;8152:44;7872:415;8259:12;8252:20;;-1:-1:-1;;;8252:20:25;;;;;;;;:::i;14:155:138:-;73:5;118:3;109:6;104:3;100:16;96:26;93:46;;;135:1;132;125:12;93:46;-1:-1:-1;157:6:138;14:155;-1:-1:-1;14:155:138:o;174:367::-;237:8;247:6;301:3;294:4;286:6;282:17;278:27;268:55;;319:1;316;309:12;268:55;-1:-1:-1;342:20:138;;385:18;374:30;;371:50;;;417:1;414;407:12;371:50;454:4;446:6;442:17;430:29;;514:3;507:4;497:6;494:1;490:14;482:6;478:27;474:38;471:47;468:67;;;531:1;528;521:12;468:67;174:367;;;;;:::o;546:633::-;677:6;685;693;701;754:3;742:9;733:7;729:23;725:33;722:53;;;771:1;768;761:12;722:53;794;839:7;828:9;794:53;:::i;:::-;784:63;;894:3;883:9;879:19;866:33;856:43;;950:3;939:9;935:19;922:33;978:18;970:6;967:30;964:50;;;1010:1;1007;1000:12;964:50;1049:70;1111:7;1102:6;1091:9;1087:22;1049:70;:::i;:::-;546:633;;;;-1:-1:-1;1138:8:138;-1:-1:-1;;;;546:633:138:o;1184:335::-;1278:6;1286;1330:9;1321:7;1317:23;1360:2;1356;1352:11;1349:31;;;1376:1;1373;1366:12;1349:31;1399:23;;;-1:-1:-1;1456:2:138;-1:-1:-1;;1438:16:138;;1434:25;1431:45;;;1472:1;1469;1462:12;1431:45;;1510:2;1499:9;1495:18;1485:28;;1184:335;;;;;:::o;1524:148::-;-1:-1:-1;;;;;1616:31:138;;1606:42;;1596:70;;1662:1;1659;1652:12;1677:288;1760:6;1813:2;1801:9;1792:7;1788:23;1784:32;1781:52;;;1829:1;1826;1819:12;1781:52;1868:9;1855:23;1887:48;1929:5;1887:48;:::i;1970:180::-;2029:6;2082:2;2070:9;2061:7;2057:23;2053:32;2050:52;;;2098:1;2095;2088:12;2050:52;-1:-1:-1;2121:23:138;;1970:180;-1:-1:-1;1970:180:138:o;2363:332::-;2431:6;2439;2492:2;2480:9;2471:7;2467:23;2463:32;2460:52;;;2508:1;2505;2498:12;2460:52;2547:9;2534:23;2566:48;2608:5;2566:48;:::i;:::-;2633:5;2685:2;2670:18;;;;2657:32;;-1:-1:-1;;;2363:332:138:o;3138:269::-;3195:6;3248:2;3236:9;3227:7;3223:23;3219:32;3216:52;;;3264:1;3261;3254:12;3216:52;3303:9;3290:23;3353:4;3346:5;3342:16;3335:5;3332:27;3322:55;;3373:1;3370;3363:12;3786:248;3854:6;3862;3915:2;3903:9;3894:7;3890:23;3886:32;3883:52;;;3931:1;3928;3921:12;3883:52;-1:-1:-1;;3954:23:138;;;4024:2;4009:18;;;3996:32;;-1:-1:-1;3786:248:138:o;4039:127::-;4100:10;4095:3;4091:20;4088:1;4081:31;4131:4;4128:1;4121:15;4155:4;4152:1;4145:15;4171:209;4251:1;4244:5;4241:12;4231:143;;4296:10;4291:3;4287:20;4284:1;4277:31;4331:4;4328:1;4321:15;4359:4;4356:1;4349:15;4385:213;4464:5;4458:12;4479:33;4509:2;4479:33;:::i;:::-;4521:15;;4585:4;4574:16;;;4568:23;4552:14;;4545:47;4385:213::o;4603:807::-;4672:3;4710:5;4704:12;4737:6;4732:3;4725:19;4763:4;4792:2;4787:3;4783:12;4776:19;;4829:2;4822:5;4818:14;4850:1;4860:525;4874:6;4871:1;4868:13;4860:525;;;4939:6;4933:13;4959:43;4998:3;4993:2;4987:9;4959:43;:::i;:::-;5031:11;;;5025:18;5066:4;5090:12;;;5083:24;;;;5146:11;;5140:18;5226:20;5219:28;5181:4;5205:12;;;5198:50;;;;5290:11;5284:18;5277:4;5268:14;;5261:42;5332:4;5323:14;;;;5360:15;;;;4896:1;4889:9;4860:525;;;-1:-1:-1;5401:3:138;;4603:807;-1:-1:-1;;;;;4603:807:138:o;5415:1500::-;5561:4;5590:2;5619;5608:9;5601:21;5641:3;5682:2;5671:9;5667:18;5710:6;5704:13;5726:33;5756:2;5726:33;:::i;:::-;5775:18;;;5768:30;5833:15;;;5827:22;5868:4;5891:2;5909:18;;;5902:30;;;5981:19;;6009:22;;;;6050:3;;6110:21;;;;6069:18;;;;6149:1;6159:545;6173:6;6170:1;6167:13;6159:545;;;6238:6;6232:13;6258:43;6297:3;6292:2;6286:9;6258:43;:::i;:::-;6342:11;;;6336:18;-1:-1:-1;;;;;6430:23:138;;;6416:12;;;6409:45;6498:11;;;6492:18;6488:27;6474:12;;;6467:49;6556:11;;;6550:18;6536:12;;;6529:40;6609:11;;6603:18;6589:12;;;6582:40;6679:15;;;;6651:4;6642:14;;;;6394:1;6188:9;6159:545;;;-1:-1:-1;;6741:15:138;;;6735:22;6797:19;;;-1:-1:-1;;6793:33:138;6773:18;;;6766:61;6735:22;-1:-1:-1;6844:65:138;6801:3;6735:22;6844:65;:::i;:::-;6836:73;5415:1500;-1:-1:-1;;;;;;;;;;5415:1500:138:o;7421:163::-;7488:20;;7548:10;7537:22;;7527:33;;7517:61;;7574:1;7571;7564:12;7517:61;7421:163;;;:::o;7589:650::-;7700:6;7708;7716;7724;7732;7785:3;7773:9;7764:7;7760:23;7756:33;7753:53;;;7802:1;7799;7792:12;7753:53;7838:9;7825:23;7815:33;;7867:37;7900:2;7889:9;7885:18;7867:37;:::i;:::-;7857:47;;7955:2;7944:9;7940:18;7927:32;7982:18;7974:6;7971:30;7968:50;;;8014:1;8011;8004:12;7968:50;8053:70;8115:7;8106:6;8095:9;8091:22;8053:70;:::i;:::-;8142:8;;-1:-1:-1;8027:96:138;-1:-1:-1;8196:37:138;;-1:-1:-1;8229:2:138;8214:18;;8196:37;:::i;:::-;8186:47;;7589:650;;;;;;;;:::o;8426:234::-;8571:2;8556:18;;8583:37;8613:6;8583:37;:::i;:::-;8629:25;;;8426:234;:::o;8665:479::-;8933:3;8918:19;;8946:46;8922:9;8974:6;8946:46;:::i;:::-;9023:2;9008:18;;9001:34;;;;9078:14;;9071:22;9066:2;9051:18;;9044:50;9125:3;9110:19;;;9103:35;8665:479;;-1:-1:-1;8665:479:138:o;9791:796::-;9918:6;9926;9934;9942;9950;9958;9966;10019:3;10007:9;9998:7;9994:23;9990:33;9987:53;;;10036:1;10033;10026:12;9987:53;10059:28;10077:9;10059:28;:::i;:::-;10049:38;;10106:37;10139:2;10128:9;10124:18;10106:37;:::i;:::-;10096:47;;10190:2;10179:9;10175:18;10162:32;10152:42;;10245:2;10234:9;10230:18;10217:32;10272:18;10264:6;10261:30;10258:50;;;10304:1;10301;10294:12;10258:50;10343:70;10405:7;10396:6;10385:9;10381:22;10343:70;:::i;:::-;10432:8;;-1:-1:-1;10317:96:138;-1:-1:-1;10486:38:138;;-1:-1:-1;10519:3:138;10504:19;;10486:38;:::i;:::-;10476:48;;10543:38;10576:3;10565:9;10561:19;10543:38;:::i;:::-;10533:48;;9791:796;;;;;;;;;;:::o;10892:106::-;10972:1;10965:5;10962:12;10952:40;;10988:1;10985;10978:12;11003:764;11126:6;11134;11142;11150;11203:3;11191:9;11182:7;11178:23;11174:33;11171:53;;;11220:1;11217;11210:12;11171:53;11259:9;11246:23;11278:48;11320:5;11278:48;:::i;:::-;11345:5;-1:-1:-1;11402:2:138;11387:18;;11374:32;11415:50;11374:32;11415:50;:::i;:::-;11484:7;-1:-1:-1;11543:2:138;11528:18;;11515:32;11556:38;11515:32;11556:38;:::i;:::-;11613:7;-1:-1:-1;11672:2:138;11657:18;;11644:32;11685:50;11644:32;11685:50;:::i;:::-;11003:764;;;;-1:-1:-1;11003:764:138;;-1:-1:-1;;11003:764:138:o;11772:352::-;11974:2;11956:21;;;12013:2;11993:18;;;11986:30;12052;12047:2;12032:18;;12025:58;12115:2;12100:18;;11772:352::o;12129:355::-;12331:2;12313:21;;;12370:2;12350:18;;;12343:30;12409:33;12404:2;12389:18;;12382:61;12475:2;12460:18;;12129:355::o;12837:298::-;12937:5;12924:19;12952:38;12982:7;12952:38;:::i;:::-;12999;13029:7;12999:38;:::i;:::-;13046:20;;13122:4;13111:16;;;13098:30;13082:14;;13075:54;12837:298::o;13140:466::-;13326:3;13311:19;;13339:55;13315:9;13376:6;13339:55;:::i;:::-;13457:4;13449:6;13445:17;13432:31;13425:4;13414:9;13410:20;13403:61;13525:2;13517:6;13513:15;13500:29;13495:2;13484:9;13480:18;13473:57;13593:4;13585:6;13581:17;13568:31;13561:4;13550:9;13546:20;13539:61;13140:466;;;;:::o;13957:127::-;14018:10;14013:3;14009:20;14006:1;13999:31;14049:4;14046:1;14039:15;14073:4;14070:1;14063:15;14089:125;14129:4;14157:1;14154;14151:8;14148:34;;;14162:18;;:::i;:::-;-1:-1:-1;14199:9:138;;14089:125::o;14219:128::-;14259:3;14290:1;14286:6;14283:1;14280:13;14277:39;;;14296:18;;:::i;:::-;-1:-1:-1;14332:9:138;;14219:128::o;16322:268::-;16392:6;16445:2;16433:9;16424:7;16420:23;16416:32;16413:52;;;16461:1;16458;16451:12;16413:52;16493:9;16487:16;16512:48;16554:5;16512:48;:::i;16595:406::-;16797:2;16779:21;;;16836:2;16816:18;;;16809:30;16875:34;16870:2;16855:18;;16848:62;-1:-1:-1;;;16941:2:138;16926:18;;16919:40;16991:3;16976:19;;16595:406::o;17006:277::-;17073:6;17126:2;17114:9;17105:7;17101:23;17097:32;17094:52;;;17142:1;17139;17132:12;17094:52;17174:9;17168:16;17227:5;17220:13;17213:21;17206:5;17203:32;17193:60;;17249:1;17246;17239:12;17288:404;17490:2;17472:21;;;17529:2;17509:18;;;17502:30;17568:34;17563:2;17548:18;;17541:62;-1:-1:-1;;;17634:2:138;17619:18;;17612:38;17682:3;17667:19;;17288:404::o;18122:135::-;18161:3;-1:-1:-1;;18182:17:138;;18179:43;;;18202:18;;:::i;:::-;-1:-1:-1;18249:1:138;18238:13;;18122:135::o;18262:127::-;18323:10;18318:3;18314:20;18311:1;18304:31;18354:4;18351:1;18344:15;18378:4;18375:1;18368:15;18394:127;18455:10;18450:3;18446:20;18443:1;18436:31;18486:4;18483:1;18476:15;18510:4;18507:1;18500:15;18949:127;19010:10;19005:3;19001:20;18998:1;18991:31;19041:4;19038:1;19031:15;19065:4;19062:1;19055:15;19081:191;19120:1;19146:10;19183:2;19180:1;19176:10;19205:3;19195:37;;19212:18;;:::i;:::-;19250:10;;19246:20;;;;;19081:191;-1:-1:-1;;19081:191:138:o;19277:228::-;19316:3;19344:10;19381:2;19378:1;19374:10;19411:2;19408:1;19404:10;19442:3;19438:2;19434:12;19429:3;19426:21;19423:47;;;19450:18;;:::i;:::-;19486:13;;19277:228;-1:-1:-1;;;;19277:228:138:o;19510:221::-;19549:4;19578:10;19638;;;;19608;;19660:12;;;19657:38;;;19675:18;;:::i;:::-;19712:13;;19510:221;-1:-1:-1;;;19510:221:138:o;20899:356::-;21101:2;21083:21;;;21120:18;;;21113:30;21179:34;21174:2;21159:18;;21152:62;21246:2;21231:18;;20899:356::o;21260:708::-;21454:3;21439:19;;21467:55;21443:9;21504:6;21467:55;:::i;:::-;21569:4;21561:6;21557:17;21544:31;21584:48;21626:5;21584:48;:::i;:::-;-1:-1:-1;;;;;21708:14:138;;;21701:4;21686:20;;21679:44;21772:4;21760:17;;21747:31;;21787:50;21747:31;21787:50;:::i;:::-;21875:16;21868:4;21853:20;;21846:46;21955:4;21943:17;;;21930:31;21908:20;;;;21901:61;;;;21260:708;:::o;21973:183::-;22004:1;22030:10;22067:2;22064:1;22060:10;22089:3;22079:37;;22096:18;;:::i;:::-;22134:10;;22130:20;;;;;21973:183;-1:-1:-1;;21973:183:138:o;22161:201::-;22199:3;22227:10;22272:2;22265:5;22261:14;22299:2;22290:7;22287:15;22284:41;;;22305:18;;:::i;:::-;22354:1;22341:15;;22161:201;-1:-1:-1;;;22161:201:138:o;23373:136::-;23412:3;23440:5;23430:39;;23449:18;;:::i;:::-;-1:-1:-1;;;23485:18:138;;23373:136::o;28176:184::-;28246:6;28299:2;28287:9;28278:7;28274:23;28270:32;28267:52;;;28315:1;28312;28305:12;28267:52;-1:-1:-1;28338:16:138;;28176:184;-1:-1:-1;28176:184:138:o;30125:258::-;30197:1;30207:113;30221:6;30218:1;30215:13;30207:113;;;30297:11;;;30291:18;30278:11;;;30271:39;30243:2;30236:10;30207:113;;;30338:6;30335:1;30332:13;30329:48;;;-1:-1:-1;;30373:1:138;30355:16;;30348:27;30125:258::o;30388:274::-;30517:3;30555:6;30549:13;30571:53;30617:6;30612:3;30605:4;30597:6;30593:17;30571:53;:::i;:::-;30640:16;;;;;30388:274;-1:-1:-1;;30388:274:138:o;30667:383::-;30816:2;30805:9;30798:21;30779:4;30848:6;30842:13;30891:6;30886:2;30875:9;30871:18;30864:34;30907:66;30966:6;30961:2;30950:9;30946:18;30941:2;30933:6;30929:15;30907:66;:::i;:::-;31034:2;31013:15;-1:-1:-1;;31009:29:138;30994:45;;;;31041:2;30990:54;;30667:383;-1:-1:-1;;30667:383:138:o","linkReferences":{}},"methodIdentifiers":{"ETH_TOKEN_ADDRESS()":"1878d1f1","calculate_root(bytes32,uint32,bytes32[],uint32)":"af26c695","calculate_root_impl(uint32,uint32,bytes32,bytes32[],uint32,uint32)":"ef0ba5d0","cancelResolutions(uint256)":"ca9b21ae","chain()":"c763e5a1","close_cancel(((uint8,uint256),(uint256,uint256),bytes32),bytes32,bytes32[])":"01ef6966","close_withdrawal(((uint8,uint256),address,address,uint256),bytes32,bytes32[])":"dfb0b12b","counter()":"61bc221a","deposit(address,uint256)":"47e7ef24","deposit_erc20(address,uint256)":"d16544f0","deposit_native()":"c87c2224","find_l2_batch(uint256)":"f9ecd01e","getPendingRequests(uint256,uint256)":"79e041f2","getUpdateForL2()":"b1538706","initialize(address,address,uint8,address)":"ffea632b","lastProcessedUpdate_origin_l1()":"7fd4f845","lastProcessedUpdate_origin_l2()":"f26ee9d0","merkleRootRange(bytes32)":"4f48eedf","owner()":"8da5cb5b","pause(uint256)":"136439dd","pauseAll()":"595c6a67","paused()":"5c975abb","paused(uint8)":"5ac86ab7","pauserRegistry()":"886f1195","processedL2Requests(uint256)":"a555980b","renounceOwnership()":"715018a6","setPauserRegistry(address)":"10d67a2f","setUpdater(address)":"9d54f419","transferOwnership(address)":"f2fde38b","unpause(uint256)":"fabc1cbc","update_l1_from_l2(bytes32,(uint256,uint256))":"08f42d40","updaterAccount()":"71c54461"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.12+commit.f00d7308\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"depositRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DepositAcceptedIntoQueue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"cancelJustified\",\"type\":\"bool\"}],\"name\":\"DisputeResolutionAcceptedIntoQueue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token_address\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ERC20TokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeTokensWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updater\",\"type\":\"address\"}],\"name\":\"NewUpdaterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"pauserRegistry\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"PauserRegistrySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"withdrawalHash\",\"type\":\"bytes32\"}],\"name\":\"WithdrawalClosed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ETH_TOKEN_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leave_hash\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"leave_idx\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"leaves_count\",\"type\":\"uint32\"}],\"name\":\"calculate_root\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"level\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proofs\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"proof_idx\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"max_index\",\"type\":\"uint32\"}],\"name\":\"calculate_root_impl\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cancelResolutions\",\"outputs\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"l2RequestId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"cancelJustified\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timeStamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"chain\",\"outputs\":[{\"internalType\":\"enum IRolldownPrimitives.ChainId\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Range\",\"name\":\"range\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"internalType\":\"struct IRolldownPrimitives.Cancel\",\"name\":\"cancel\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"merkle_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"close_cancel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Withdrawal\",\"name\":\"withdrawal\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"merkle_root\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"close_withdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"counter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit_erc20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit_native\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"name\":\"find_l2_batch\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Range\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"name\":\"getPendingRequests\",\"outputs\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.ChainId\",\"name\":\"chain\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"depositRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Deposit[]\",\"name\":\"pendingDeposits\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"l2RequestId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"cancelJustified\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timeStamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.CancelResolution[]\",\"name\":\"pendingCancelResolutions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRolldownPrimitives.L1Update\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUpdateForL2\",\"outputs\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.ChainId\",\"name\":\"chain\",\"type\":\"uint8\"},{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"depositRecipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timeStamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Deposit[]\",\"name\":\"pendingDeposits\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum IRolldownPrimitives.Origin\",\"name\":\"origin\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.RequestId\",\"name\":\"requestId\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"l2RequestId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"cancelJustified\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"timeStamp\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.CancelResolution[]\",\"name\":\"pendingCancelResolutions\",\"type\":\"tuple[]\"}],\"internalType\":\"struct IRolldownPrimitives.L1Update\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"_pauserRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"},{\"internalType\":\"enum IRolldownPrimitives.ChainId\",\"name\":\"chainId\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"updater\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastProcessedUpdate_origin_l1\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastProcessedUpdate_origin_l2\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"merkleRootRange\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauseAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"index\",\"type\":\"uint8\"}],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserRegistry\",\"outputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"processedL2Requests\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IPauserRegistry\",\"name\":\"newPauserRegistry\",\"type\":\"address\"}],\"name\":\"setPauserRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"updater\",\"type\":\"address\"}],\"name\":\"setUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPausedStatus\",\"type\":\"uint256\"}],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"merkle_root\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"end\",\"type\":\"uint256\"}],\"internalType\":\"struct IRolldownPrimitives.Range\",\"name\":\"range\",\"type\":\"tuple\"}],\"name\":\"update_l1_from_l2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updaterAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause(uint256)\":{\"details\":\"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause(uint256)\":{\"details\":\"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.\",\"params\":{\"newPausedStatus\":\"represents the new value for `_paused` to take, which means it may flip several bits at once.\"}}},\"version\":1},\"userdoc\":{\"events\":{\"Paused(address,uint256)\":{\"notice\":\"Emitted when the pause is triggered by `account`, and changed to `newPausedStatus`.\"},\"PauserRegistrySet(address,address)\":{\"notice\":\"Emitted when the `pauserRegistry` is set to `newPauserRegistry`.\"},\"Unpaused(address,uint256)\":{\"notice\":\"Emitted when the pause is lifted by `account`, and changed to `newPausedStatus`.\"}},\"kind\":\"user\",\"methods\":{\"pause(uint256)\":{\"notice\":\"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig.\"},\"pauseAll()\":{\"notice\":\"Alias for `pause(type(uint256).max)`.\"},\"paused()\":{\"notice\":\"Returns the current paused status as a uint256.\"},\"paused(uint8)\":{\"notice\":\"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise\"},\"pauserRegistry()\":{\"notice\":\"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing).\"},\"setPauserRegistry(address)\":{\"notice\":\"Allows the unpauser to set a new pauser registry\"},\"unpause(uint256)\":{\"notice\":\"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Rolldown.sol\":\"Rolldown\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/\",\":@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/\",\":@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/\",\":@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/\",\":eigenlayer-middleware/=lib/eigenlayer-middleware/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/\"]},\"sources\":{\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol\":{\"keccak256\":\"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2\",\"dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol\":{\"keccak256\":\"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324\",\"dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol\":{\"keccak256\":\"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d\",\"dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx\"]},\"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol\":{\"keccak256\":\"0xc543d34b3e0fd116227fc5218286de6b30a9141f47df2e8cc17d857d2c0cb338\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e78ca3c3c9f14ccde852ea41bc411726ea7770a1cf2ef18851e67bcdf7522cff\",\"dweb:/ipfs/QmWagcWsaNZqBZhdEHhZ4PcU9fx5wQnrbjoaaFvjEwgGHt\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"src/IRolldown.sol\":{\"keccak256\":\"0x33b290caba61fd424ce628c961e103eabce5a339c2db19ce3903eaa2286dba71\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://33964a20189dd2a7e1f95a4aa28083b8879aa8c71a06dc3e87677c2445281b59\",\"dweb:/ipfs/QmXaFEH93cus3EyiDJrKNZ7RtrjdjSU7TEEeg4FQGJaa4d\"]},\"src/IRolldownPrimitives.sol\":{\"keccak256\":\"0xbc8b48e4d05032618a93a4247325d26e7b8e9b44a31b8811fff43ec67db5b73c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25d91dbd6c5b2da4c5a61404395c91705f4f26ad2e0f3210398e23c4cdd0a55e\",\"dweb:/ipfs/Qmc4B7G9xV3eQvxX4uEft6BLvZdFGxVoJV2A2P77tX7QGP\"]},\"src/Rolldown.sol\":{\"keccak256\":\"0xbdceedf3af1d4c7a4caf9388fa9b5ac053505d1fca4c093c0dba88fcad79e201\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c371ae104a84b5b5e7ae987b2b75fa0b544d5c7123ed2dee9481d7b49e250154\",\"dweb:/ipfs/QmNpRtYDmj2FMRozynsh7MKrECYyd1GugYfWaJJDtpJpou\"]},\"src/RolldownStorage.sol\":{\"keccak256\":\"0x4b3b649a7f740587c1f488b4c0bb3ed8d996cacafef5307970e7cf54a3001e39\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://49774ff2771b113aa0dd823bdedd14b6223ac584fe8f274415c46e6952efcd2a\",\"dweb:/ipfs/QmVsJ8thWuhcAC5aPLhKPKR85aXUWqjZPrKnahwuygpyRS\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.12+commit.f00d7308"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256","indexed":false},{"internalType":"address","name":"depositRecipient","type":"address","indexed":false},{"internalType":"address","name":"tokenAddress","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"DepositAcceptedIntoQueue","anonymous":false},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256","indexed":false},{"internalType":"bool","name":"cancelJustified","type":"bool","indexed":false}],"type":"event","name":"DisputeResolutionAcceptedIntoQueue","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"address","name":"token_address","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ERC20TokensWithdrawn","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"NativeTokensWithdrawn","anonymous":false},{"inputs":[{"internalType":"address","name":"updater","type":"address","indexed":false}],"type":"event","name":"NewUpdaterSet","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Paused","anonymous":false},{"inputs":[{"internalType":"contract IPauserRegistry","name":"pauserRegistry","type":"address","indexed":false},{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address","indexed":false}],"type":"event","name":"PauserRegistrySet","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"uint256","name":"newPausedStatus","type":"uint256","indexed":false}],"type":"event","name":"Unpaused","anonymous":false},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256","indexed":false},{"internalType":"bytes32","name":"withdrawalHash","type":"bytes32","indexed":false}],"type":"event","name":"WithdrawalClosed","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"ETH_TOKEN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"leave_hash","type":"bytes32"},{"internalType":"uint32","name":"leave_idx","type":"uint32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"},{"internalType":"uint32","name":"leaves_count","type":"uint32"}],"stateMutability":"pure","type":"function","name":"calculate_root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint32","name":"level","type":"uint32"},{"internalType":"uint32","name":"pos","type":"uint32"},{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes32[]","name":"proofs","type":"bytes32[]"},{"internalType":"uint32","name":"proof_idx","type":"uint32"},{"internalType":"uint32","name":"max_index","type":"uint32"}],"stateMutability":"pure","type":"function","name":"calculate_root_impl","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"cancelResolutions","outputs":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"uint256","name":"l2RequestId","type":"uint256"},{"internalType":"bool","name":"cancelJustified","type":"bool"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"chain","outputs":[{"internalType":"enum IRolldownPrimitives.ChainId","name":"","type":"uint8"}]},{"inputs":[{"internalType":"struct IRolldownPrimitives.Cancel","name":"cancel","type":"tuple","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"struct IRolldownPrimitives.Range","name":"range","type":"tuple","components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}]},{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"internalType":"bytes32","name":"merkle_root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"close_cancel"},{"inputs":[{"internalType":"struct IRolldownPrimitives.Withdrawal","name":"withdrawal","type":"tuple","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}]},{"internalType":"bytes32","name":"merkle_root","type":"bytes32"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function","name":"close_withdrawal"},{"inputs":[],"stateMutability":"view","type":"function","name":"counter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"deposit_erc20"},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit_native"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"}],"stateMutability":"view","type":"function","name":"find_l2_batch","outputs":[{"internalType":"struct IRolldownPrimitives.Range","name":"","type":"tuple","components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPendingRequests","outputs":[{"internalType":"struct IRolldownPrimitives.L1Update","name":"","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.ChainId","name":"chain","type":"uint8"},{"internalType":"struct IRolldownPrimitives.Deposit[]","name":"pendingDeposits","type":"tuple[]","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"address","name":"depositRecipient","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}]},{"internalType":"struct IRolldownPrimitives.CancelResolution[]","name":"pendingCancelResolutions","type":"tuple[]","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"uint256","name":"l2RequestId","type":"uint256"},{"internalType":"bool","name":"cancelJustified","type":"bool"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getUpdateForL2","outputs":[{"internalType":"struct IRolldownPrimitives.L1Update","name":"","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.ChainId","name":"chain","type":"uint8"},{"internalType":"struct IRolldownPrimitives.Deposit[]","name":"pendingDeposits","type":"tuple[]","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"address","name":"depositRecipient","type":"address"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}]},{"internalType":"struct IRolldownPrimitives.CancelResolution[]","name":"pendingCancelResolutions","type":"tuple[]","components":[{"internalType":"struct IRolldownPrimitives.RequestId","name":"requestId","type":"tuple","components":[{"internalType":"enum IRolldownPrimitives.Origin","name":"origin","type":"uint8"},{"internalType":"uint256","name":"id","type":"uint256"}]},{"internalType":"uint256","name":"l2RequestId","type":"uint256"},{"internalType":"bool","name":"cancelJustified","type":"bool"},{"internalType":"uint256","name":"timeStamp","type":"uint256"}]}]}]},{"inputs":[{"internalType":"contract IPauserRegistry","name":"_pauserRegistry","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"enum IRolldownPrimitives.ChainId","name":"chainId","type":"uint8"},{"internalType":"address","name":"updater","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastProcessedUpdate_origin_l1","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastProcessedUpdate_origin_l2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"merkleRootRange","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pause"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"pauseAll"},{"inputs":[{"internalType":"uint8","name":"index","type":"uint8"}],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pauserRegistry","outputs":[{"internalType":"contract IPauserRegistry","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"processedL2Requests","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"contract IPauserRegistry","name":"newPauserRegistry","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setPauserRegistry"},{"inputs":[{"internalType":"address","name":"updater","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setUpdater"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"newPausedStatus","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unpause"},{"inputs":[{"internalType":"bytes32","name":"merkle_root","type":"bytes32"},{"internalType":"struct IRolldownPrimitives.Range","name":"range","type":"tuple","components":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"end","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"update_l1_from_l2"},{"inputs":[],"stateMutability":"view","type":"function","name":"updaterAccount","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"owner()":{"details":"Returns the address of the current owner."},"pause(uint256)":{"details":"This function can only pause functionality, and thus cannot 'unflip' any bit in `_paused` from 1 to 0.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unpause(uint256)":{"details":"This function can only unpause functionality, and thus cannot 'flip' any bit in `_paused` from 0 to 1.","params":{"newPausedStatus":"represents the new value for `_paused` to take, which means it may flip several bits at once."}}},"version":1},"userdoc":{"kind":"user","methods":{"pause(uint256)":{"notice":"This function is used to pause an EigenLayer contract's functionality. It is permissioned to the `pauser` address, which is expected to be a low threshold multisig."},"pauseAll()":{"notice":"Alias for `pause(type(uint256).max)`."},"paused()":{"notice":"Returns the current paused status as a uint256."},"paused(uint8)":{"notice":"Returns 'true' if the `indexed`th bit of `_paused` is 1, and 'false' otherwise"},"pauserRegistry()":{"notice":"Address of the `PauserRegistry` contract that this contract defers to for determining access control (for pausing)."},"setPauserRegistry(address)":{"notice":"Allows the unpauser to set a new pauser registry"},"unpause(uint256)":{"notice":"This function is used to unpause an EigenLayer contract's functionality. It is permissioned to the `unpauser` address, which is expected to be a high threshold multisig or governance contract."}},"version":1}},"settings":{"remappings":["@eigenlayer-middleware/=lib/eigenlayer-middleware/","@eigenlayer-scripts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/script/","@eigenlayer/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/","@openzeppelin-upgrades/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/","@openzeppelin/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","eigenlayer-contracts/=lib/eigenlayer-middleware/lib/eigenlayer-contracts/","eigenlayer-middleware/=lib/eigenlayer-middleware/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/eigenlayer-middleware/lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/eigenlayer-middleware/lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/Rolldown.sol":"Rolldown"},"evmVersion":"london","libraries":{}},"sources":{"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/security/ReentrancyGuard.sol":{"keccak256":"0x0e9621f60b2faabe65549f7ed0f24e8853a45c1b7990d47e8160e523683f3935","urls":["bzz-raw://287a2f8d5814dd0f05f22b740f18ca8321acc21c9bd03a6cb2203ea626e2f3f2","dweb:/ipfs/QmZRQv9iuwU817VuqkA2WweiaibKii69x9QxYBBEfbNEud"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPausable.sol":{"keccak256":"0x98cffc894842947377e24c1d375813a1120dd73a84c29782ab68404e109cb34f","urls":["bzz-raw://b3474f6c350ceaee57cbdfb08fb48835d0c6e81ae8ebfbb9667899584a139324","dweb:/ipfs/QmWELKtksdtWxQbqAccd8yGyhKqrgPZXTADKR7BuT27Zg5"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/interfaces/IPauserRegistry.sol":{"keccak256":"0x9de8dd682bc0d812bbd6583c0231cbf35448d5eff58b74a93efa64cb9a768c49","urls":["bzz-raw://c00d6c675b9c72b092d287fe85fd37782588df32b8eb59ab4c7db7a86be25e7d","dweb:/ipfs/QmeYokY3HhAdbBaCPdHg3PgQEdRCDFEJy3Wf7VtgHBkQSx"],"license":"BUSL-1.1"},"lib/eigenlayer-middleware/lib/eigenlayer-contracts/src/contracts/permissions/Pausable.sol":{"keccak256":"0xc543d34b3e0fd116227fc5218286de6b30a9141f47df2e8cc17d857d2c0cb338","urls":["bzz-raw://e78ca3c3c9f14ccde852ea41bc411726ea7770a1cf2ef18851e67bcdf7522cff","dweb:/ipfs/QmWagcWsaNZqBZhdEHhZ4PcU9fx5wQnrbjoaaFvjEwgGHt"],"license":"BUSL-1.1"},"lib/forge-std/src/console.sol":{"keccak256":"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba","urls":["bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70","dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec"],"license":"MIT"},"src/IRolldown.sol":{"keccak256":"0x33b290caba61fd424ce628c961e103eabce5a339c2db19ce3903eaa2286dba71","urls":["bzz-raw://33964a20189dd2a7e1f95a4aa28083b8879aa8c71a06dc3e87677c2445281b59","dweb:/ipfs/QmXaFEH93cus3EyiDJrKNZ7RtrjdjSU7TEEeg4FQGJaa4d"],"license":"UNLICENSED"},"src/IRolldownPrimitives.sol":{"keccak256":"0xbc8b48e4d05032618a93a4247325d26e7b8e9b44a31b8811fff43ec67db5b73c","urls":["bzz-raw://25d91dbd6c5b2da4c5a61404395c91705f4f26ad2e0f3210398e23c4cdd0a55e","dweb:/ipfs/Qmc4B7G9xV3eQvxX4uEft6BLvZdFGxVoJV2A2P77tX7QGP"],"license":"UNLICENSED"},"src/Rolldown.sol":{"keccak256":"0xbdceedf3af1d4c7a4caf9388fa9b5ac053505d1fca4c093c0dba88fcad79e201","urls":["bzz-raw://c371ae104a84b5b5e7ae987b2b75fa0b544d5c7123ed2dee9481d7b49e250154","dweb:/ipfs/QmNpRtYDmj2FMRozynsh7MKrECYyd1GugYfWaJJDtpJpou"],"license":"BUSL-1.1"},"src/RolldownStorage.sol":{"keccak256":"0x4b3b649a7f740587c1f488b4c0bb3ed8d996cacafef5307970e7cf54a3001e39","urls":["bzz-raw://49774ff2771b113aa0dd823bdedd14b6223ac584fe8f274415c46e6952efcd2a","dweb:/ipfs/QmVsJ8thWuhcAC5aPLhKPKR85aXUWqjZPrKnahwuygpyRS"],"license":"BUSL-1.1"}},"version":1},"id":130} \ No newline at end of file diff --git a/stash/src/app.ts b/stash/src/app.ts index af31bb3d..f2cd0d9c 100644 --- a/stash/src/app.ts +++ b/stash/src/app.ts @@ -14,6 +14,7 @@ import * as liquidStakingController from './controller/liquidStakingController.j import * as networkController from './controller/networkController.js' import * as tokenNetworkPortfolioController from './controller/tokenNetworkPortfolioController.js' import * as faucetController from './controller/FaucetController.js' +import * as tracingController from './controller/TracingController.js' import { createRequire } from 'module' const require = createRequire(import.meta.url) @@ -87,12 +88,12 @@ app.get( app.get('/coingecko/pairs', coingeckoController.pairs) app.get('/coingecko/tickers', coingeckoController.tickers) - app.get('/affirmed-network/list', networkController.networkList) - app.get('/affirmed-token/list', networkController.tokenList) - app.get( - '/account/:address/token-portfolio', - tokenNetworkPortfolioController.tokenNetworkPortfolio - ) +app.get('/affirmed-network/list', networkController.networkList) +app.get('/affirmed-token/list', networkController.tokenList) +app.get( + '/account/:address/token-portfolio', + tokenNetworkPortfolioController.tokenNetworkPortfolio +) //Faucet endpoint app.get( @@ -100,6 +101,30 @@ app.get( faucetController.captcha ) +// Tracing endpoints +app.post('/tracing/tx/start', tracingController.startTracing) + +app.get( + '/tracing/tx/:txHashOrEntityId', + tracingController.getTransactionStatusByTxHashOrEntityId +) + +app.get( + '/tracing/tx/listByAddress/:address', + tracingController.getAllTransactionsByAddress +) + +app.get( + '/tracing/tx/listByAddress/:address/:status', + tracingController.getAllTransactionsByAddressAndStatus +) + +app.get( + '/tracing/tx/findByEntityId/:entityId', + + tracingController.getATransactionByEntityId +) + // Coinmarketcap listing endpoints app.get('/coinmarketcap/v1/summary', coinmarketcapController.summary) diff --git a/stash/src/connector/RedisConnector.ts b/stash/src/connector/RedisConnector.ts index a852c2b4..96b35bff 100644 --- a/stash/src/connector/RedisConnector.ts +++ b/stash/src/connector/RedisConnector.ts @@ -32,3 +32,10 @@ export const timeseries = new RedisClient( parseInt(process.env.TIMESERIES_PORT), process.env.TIMESERIES_PASS ) + +export function getTimeseriesUrl(): string { + const host = process.env.TIMESERIES_HOST + const port = parseInt(process.env.TIMESERIES_PORT) + const pass = process.env.TIMESERIES_PASS + return `redis://:${pass}@${host}:${port}` +} diff --git a/stash/src/controller/TracingController.ts b/stash/src/controller/TracingController.ts new file mode 100644 index 00000000..4d3bafe2 --- /dev/null +++ b/stash/src/controller/TracingController.ts @@ -0,0 +1,229 @@ +import { Request, Response } from 'express' +import { + findTransactionsByAddressAndStatus, + getStatusByTxHashOrEntityId, + getTransactionByEntityId, + getTransactionsByAddress, + startTracingTransaction, +} from '../service/TracingService.js' +import { + getAllTransactionsByAddressAndStatusSchema, + getAllTransactionsByAddressSchema, + getStatusByTxHashOrEntityIdSchema, + getTransactionByEntityIdSchema, + startTracingSchema, +} from '../schema/TracingSchema.js' +import * as errorHandler from '../error/Handler.js' + +export const startTracing = async (req: Request, res: Response) => { + /* + #swagger.tags = ['Tracing'] + #swagger.summary = 'Start tracing a transaction.' + #swagger.description = "Start tracing a transaction by providing transaction details." + #swagger.parameters['body'] = { + in: 'body', + description: 'Transaction details', + required: true, + schema: { + txHash: 'string', + address: 'string', + type: 'string', + chain: 'string', + amount: 'number', + asset_chainId: 'string', + asset_address: 'string' + } + } + #swagger.responses[200] = { + description: 'Successful response with transaction details' + } + #swagger.responses[400] = { + description: 'Validation error' + } + #swagger.responses[500] = { + description: 'Internal Server Error' + } + */ + const { txHash, address, type, chain, amount, asset_chainId, asset_address } = + req.body + try { + startTracingSchema.validate({ + txHash, + address, + type, + chain, + amount, + asset_chainId, + asset_address, + }) + const transaction = await startTracingTransaction({ + txHash, + address, + type, + chain, + amount, + asset_chainId, + asset_address, + }) + return res.json({ transaction }) + } catch (e) { + await errorHandler.handle(res, e) + } +} + +export const getTransactionStatusByTxHashOrEntityId = async ( + req: Request, + res: Response +) => { + /* + #swagger.tags = ['Tracing'] + #swagger.summary = 'Get transaction status by txHash or entityId.' + #swagger.description = "Get the status of a transaction by providing the transaction hash or entity ID." + #swagger.parameters['txHashOrEntityId'] = { + in: 'path', + description: 'Transaction hash or entity ID', + required: true, + type: 'string' + } + #swagger.responses[200] = { + description: 'Successful response with transaction status' + } + #swagger.responses[404] = { + description: 'Transaction not found' + } + #swagger.responses[500] = { + description: 'Internal Server Error' + } + */ + try { + const { txHashOrEntityId } = req.params + getStatusByTxHashOrEntityIdSchema.validate({ txHashOrEntityId }) + const status = await getStatusByTxHashOrEntityId(txHashOrEntityId) + if (status) { + res.status(200).send({ status }) + } else { + res.status(404).send({ error: 'Transaction not found' }) + } + } catch (e) { + await errorHandler.handle(res, e) + } +} + +export const getAllTransactionsByAddress = async ( + req: Request, + res: Response +): Promise => { + /* + #swagger.tags = ['Tracing'] + #swagger.summary = 'Get all transactions by address.' + #swagger.description = "Get all transactions associated with a specific address." + #swagger.parameters['address'] = { + in: 'path', + description: 'Address to get transactions for', + required: true, + type: 'string' + } + #swagger.responses[200] = { + description: 'Successful response with transactions' + } + #swagger.responses[404] = { + description: 'No transactions found for this address' + } + #swagger.responses[500] = { + description: 'Internal Server Error' + } + */ + const { address } = req.params + getAllTransactionsByAddressSchema.validate({ address }) + try { + const transactions = await getTransactionsByAddress(address) + if (transactions.length > 0) { + res.status(200).send({ transactions }) + } else { + res.status(404).send({ error: 'No transactions found for this address' }) + } + } catch (e) { + await errorHandler.handle(res, e) + } +} + +export const getAllTransactionsByAddressAndStatus = async ( + req: Request, + res: Response +) => { + /* + #swagger.tags = ['Tracing'] + #swagger.summary = 'Get all transactions by address and status.' + #swagger.description = "Get all transactions associated with a specific address and status." + #swagger.parameters['address'] = { + in: 'path', + description: 'Address to get transactions for', + required: true, + type: 'string' + } + #swagger.parameters['status'] = { + in: 'path', + description: 'Status of the transactions to filter by', + required: true, + type: 'string' + } + #swagger.responses[200] = { + description: 'Successful response with transactions' + } + #swagger.responses[500] = { + description: 'Internal Server Error' + } + */ + const { address, status } = req.params + try { + getAllTransactionsByAddressAndStatusSchema.validate({ + address, + status, + }) + const transactions = await findTransactionsByAddressAndStatus( + address, + status + ) + res.status(200).json(transactions) + } catch (e) { + await errorHandler.handle(res, e) + } +} + +export const getATransactionByEntityId = async ( + req: Request, + res: Response +) => { + /* + #swagger.tags = ['Tracing'] + #swagger.summary = 'Get a transaction by entityId.' + #swagger.description = "Get a specific transaction by providing the entity ID." + #swagger.parameters['entityId'] = { + in: 'path', + description: 'Entity ID of the transaction', + required: true, + type: 'string' + } + #swagger.responses[200] = { + description: 'Successful response with transaction details' + } + #swagger.responses[404] = { + description: 'Transaction not found for this entityId' + } + #swagger.responses[500] = { + description: 'Internal Server Error' + } + */ + const { entityId } = req.params + getTransactionByEntityIdSchema.validate({ entityId }) + try { + const transaction = await getTransactionByEntityId(entityId) + if (transaction) { + res.status(200).send({ transaction }) + } else { + res.status(404).send({ error: 'Transaction not found for this entityId' }) + } + } catch (e) { + await errorHandler.handle(res, e) + } +} diff --git a/stash/src/model/Transaction.ts b/stash/src/model/Transaction.ts new file mode 100644 index 00000000..99a7bbfe --- /dev/null +++ b/stash/src/model/Transaction.ts @@ -0,0 +1,23 @@ +import { Schema } from 'redis-om' + +const transactionSchema = new Schema( + 'transactions', + { + address: { type: 'string' }, + txHash: { type: 'string' }, + requestId: { type: 'number' }, + status: { type: 'string' }, + created: { type: 'number' }, + updated: { type: 'number' }, + type: { type: 'string' }, + chain: { type: 'string' }, + amount: { type: 'string' }, + asset_chainId: { type: 'string' }, + asset_address: { type: 'string' }, + }, + { + dataStructure: 'JSON', + } +) + +export { transactionSchema } diff --git a/stash/src/repository/TransactionRepository.ts b/stash/src/repository/TransactionRepository.ts new file mode 100644 index 00000000..46e3f168 --- /dev/null +++ b/stash/src/repository/TransactionRepository.ts @@ -0,0 +1,24 @@ +import { Client } from 'redis-om' +import { transactionSchema } from '../model/Transaction.js' +import { getTimeseriesUrl } from '../connector/RedisConnector.js' +import logger from '../util/Logger.js' + +const client = new Client() +await client.open(getTimeseriesUrl()) + +const transactionRepository = client.fetchRepository(transactionSchema) + +try { + await transactionRepository.createIndex() +} catch (error) { + if (error.message.includes('Index already exists')) { + logger.log({ + level: 'info', + message: 'Index already exists, skipping creation.', + }) + } else { + throw error + } +} + +export { transactionRepository } diff --git a/stash/src/schema/TracingSchema.ts b/stash/src/schema/TracingSchema.ts new file mode 100644 index 00000000..3095dec3 --- /dev/null +++ b/stash/src/schema/TracingSchema.ts @@ -0,0 +1,46 @@ +import * as yup from 'yup' + +export const startTracingSchema = yup.object().shape({ + txHash: yup + .string() + .required('txHash is required') + .matches(/^0x/, 'txHash must begin with 0x'), + address: yup + .string() + .required('address is required') + .matches(/^0x/, 'address must begin with 0x'), + type: yup.string().required('type is required'), + chain: yup + .string() + .required('chain is required') + .oneOf( + ['Ethereum', 'Arbitrum'], + 'network must be either "Ethereum" or "Arbitrum"' + ), + amount: yup.string().required('amount is required'), + asset_chainId: yup + .string() + .required('asset_chainId is required') + .matches(/^0x/, 'txHash must begin with 0x'), + asset_address: yup + .string() + .required('asset_address is required') + .matches(/^0x/, 'txHash must begin with 0x'), +}) + +export const getStatusByTxHashOrEntityIdSchema = yup.object().shape({ + txHashOrEntityId: yup.string().required('txHash or entityId is required'), +}) + +export const getAllTransactionsByAddressSchema = yup.object().shape({ + address: yup.string().required('address is required'), +}) + +export const getAllTransactionsByAddressAndStatusSchema = yup.object().shape({ + address: yup.string().required('address is required'), + status: yup.string().required('status is required'), +}) + +export const getTransactionByEntityIdSchema = yup.object().shape({ + entityId: yup.string().required('entityId is required'), +}) diff --git a/stash/src/scraper/L1LogScraper.ts b/stash/src/scraper/L1LogScraper.ts new file mode 100644 index 00000000..596292cc --- /dev/null +++ b/stash/src/scraper/L1LogScraper.ts @@ -0,0 +1,174 @@ +import { type PublicClientConfig, createPublicClient, http } from 'viem' +import RolldownContract from '../Rolldown.json' assert { type: 'json' } +import { transactionRepository } from '../repository/TransactionRepository.js' +import process from 'node:process' +import { ApiPromise } from '@polkadot/api' +import { timeseries } from '../connector/RedisConnector.js' +import { setTimeout } from 'timers/promises' +import logger from '../util/Logger.js' + +export const L1_CONFIRMED_STATUS = 'L1_CONFIRMED' +export const L1_INITIATED_STATUS = 'L1_INITIATED' + +const keepProcessing = true + +export const watchDepositAcceptedIntoQueue = async ( + api: any, + chainUrl: string, + chain: any, + chainName: string +) => { + const publicClient = getPublicClient({ + transport: http(chainUrl), + chain: chain, + }) + + while (keepProcessing) { + try { + const toBlock = await publicClient.getBlockNumber() + let fromBlock = await getLastProcessedBlock(chainName, 'deposit') + if (fromBlock === 0n) { + fromBlock = toBlock + } + logger.info({ + message: `chainName: ${chainName}, fromBlock: ${fromBlock}, toBlock: ${toBlock}`, + }) + const logs = await publicClient.getContractEvents({ + address: `0x${process.env.CONTRACT_ADDRESS}` as `0x${string}`, + abi: RolldownContract.abi, + eventName: 'DepositAcceptedIntoQueue', + fromBlock, + toBlock, + }) + for (const log of logs) { + const { transactionHash, blockNumber } = log + const existingTransaction = await transactionRepository + .search() + .where('txHash') + .equals(transactionHash) + .and('type') + .equals('deposit') + .and('status') + .equals(L1_INITIATED_STATUS) + .returnFirst() + + if (existingTransaction) { + existingTransaction.status = L1_CONFIRMED_STATUS + existingTransaction.requestId = Number((log as any).args.requestId) + const timestamp = new Date().toISOString() + existingTransaction.updated = Date.parse(timestamp) + await transactionRepository.save(existingTransaction) + logger.info({ + message: 'Transaction status updated:', + transaction: existingTransaction, + }) + } + await saveLastProcessedBlock(chainName, blockNumber, 'deposit') //saving the last processed block + } + await saveLastProcessedBlock(chainName, toBlock, 'deposit') //even if in the range of fromBlock and toBlock we didn't find any event, we save the last block + } catch (error) { + logger.error({ + message: 'Error in watchDepositAcceptedIntoQueue loop:', + error: error, + }) + } + await setTimeout(5000) + } +} + +export const processRequests = async (api: ApiPromise, l1Chain: string) => { + while (keepProcessing) { + try { + const lastProcessedRequestId = Number.parseInt( + (await api.query.rolldown.lastProcessedRequestOnL2(l1Chain)).toString() + ) + const lastSavedProcessedRequestId = await getLastProcessedRequestId( + l1Chain, + 'deposit' + ) + const transactionsToProcess = await transactionRepository + .search() + .where('chain') + .equals(l1Chain) + .and('type') + .equals('deposit') + .and('requestId') + .gte(lastSavedProcessedRequestId) + .and('requestId') + .lte(lastProcessedRequestId) + .return.all() + + for (const transaction of transactionsToProcess) { + transaction.status = 'PROCESSED' + const timestamp = new Date().toISOString() + transaction.updated = Date.parse(timestamp) + await transactionRepository.save(transaction) + } + await saveLastProcessedRequestId( + //even if we don't have any transaction to process, we save the last processed request id + l1Chain, + lastProcessedRequestId, + 'deposit' + ) + } catch (error) { + logger.error('Error processing requests:', error) + } + // Delay to avoid overwhelming the system + await setTimeout(5000) + } +} + +export const getPublicClient = (options: PublicClientConfig) => { + return createPublicClient({ ...options }) +} +const saveLastProcessedRequestId = async ( + l1Chain: string, + lastProcessedRequestId: number, + type: string +) => { + await timeseries.client.hset( + `tx:${type}:${l1Chain}`, + 'lastRequestId', + lastProcessedRequestId.toString() + ) + logger.info( + `Last processed requestId ${lastProcessedRequestId} for chain ${l1Chain} saved` + ) +} + +const getLastProcessedRequestId = async ( + l1Chain: string, + type: string +): Promise => { + const result = await timeseries.client.hget( + `tx:${type}:${l1Chain}`, + 'lastRequestId' + ) + return result ? Number(result) : 0 +} + +const saveLastProcessedBlock = async ( + l1Chain: string, + lastProcessedBlock: bigint, + type: string +) => { + await timeseries.client.hset( + `tx:${type}:${l1Chain}`, + 'lastBlock', + lastProcessedBlock.toString() + ) + logger.info( + `Last processed block ${lastProcessedBlock} saved for chain ${l1Chain}` + ) +} + +const getLastProcessedBlock = async ( + l1Chain: string, + type: string +): Promise => { + const result = await timeseries.client.hget( + `tx:${type}:${l1Chain}`, + 'lastBlock' + ) + return result ? BigInt(result) : 0n +} diff --git a/stash/src/server.ts b/stash/src/server.ts index 811abf54..78275153 100644 --- a/stash/src/server.ts +++ b/stash/src/server.ts @@ -2,6 +2,7 @@ import 'dotenv/config' import app from './app.js' import * as priceService from './processing/PriceProcessorService.js' import * as blockService from './service/SyncBlockService.js' +import * as syncTransactionsService from './service/SyncTransactionsService.js' import * as tokenService from './service/TokenService.js' import * as xcmService from './service/XcmNetworkService.js' import * as networkService from './service/NetworkService.js' @@ -29,6 +30,8 @@ const server = app.listen(app.get('port'), async () => { blockService.initService() + syncTransactionsService.initService() + const run = 1 while (run) { await new Promise((f) => setTimeout(f, BLOCK_TIME * 10)) diff --git a/stash/src/service/SyncTransactionsService.ts b/stash/src/service/SyncTransactionsService.ts new file mode 100644 index 00000000..14037217 --- /dev/null +++ b/stash/src/service/SyncTransactionsService.ts @@ -0,0 +1,37 @@ +import MangataClient from '../connector/MangataNode.js' +import { + watchDepositAcceptedIntoQueue, + processRequests, +} from '../scraper/L1LogScraper.js' +import logger from '../util/Logger.js' +import { holesky, arbitrumSepolia } from 'viem/chains' +const ETH_CHAIN = 'Ethereum' +const ARB_CHAIN = 'Arbitrum' +export const initService = async () => { + const api = await MangataClient.api() + + Promise.allSettled([ + watchDepositAcceptedIntoQueue( + api, + process.env.ETH_CHAIN_URL, + holesky, + ETH_CHAIN + ), + watchDepositAcceptedIntoQueue( + api, + process.env.ARBITRUM_SEPOLIA_CHAIN_URL, + arbitrumSepolia, + ARB_CHAIN + ), + processRequests(api, 'Arbitrum'), + processRequests(api, 'Ethereum'), + ]).then((results) => { + results.forEach((result) => { + if (result.status === 'fulfilled') { + logger.log('Promise fulfilled:', result.value) + } else { + logger.error('Promise rejected:', result.reason) + } + }) + }) +} diff --git a/stash/src/service/TracingService.ts b/stash/src/service/TracingService.ts new file mode 100644 index 00000000..14345622 --- /dev/null +++ b/stash/src/service/TracingService.ts @@ -0,0 +1,153 @@ +import logger from '../util/Logger.js' +import { transactionRepository } from '../repository/TransactionRepository.js' + +interface TraceTransactionRequest { + txHash: string + address: string + amount: string + asset_address: string + type: string + chain: string + asset_chainId: string +} + +export const startTracingTransaction = async ( + traceRequest: TraceTransactionRequest +): Promise => { + const { txHash, address, type, chain, amount, asset_chainId, asset_address } = + traceRequest + const timestamp = new Date().toISOString() + let status: string + if (type === 'deposit') { + status = 'L1_INITIATED' + } else if (type === 'withdrawal') { + status = 'L2_INITIATED' + } else { + status = 'UNKNOWN' + } + + const transactionData = { + requestId: null, //requestId we get from L1, empty when we start tracing + txHash, + address, + created: Date.parse(timestamp), + updated: Date.parse(timestamp), + status, + type, + chain, + amount, + asset_chainId, + asset_address, + } + + try { + const existingTransactions = await transactionRepository + .search() + .where('address') + .equals(address) + .and('txHash') + .equals(txHash) + .return.all() + + if (existingTransactions.length > 0) { + logger.info( + `Transaction already exists for address: ${address} and txHash: ${txHash}` + ) + return existingTransactions[0] + } else { + const transaction = await transactionRepository.save(transactionData) + logger.info( + `Transaction tracing started for address: ${address} and txHash: ${txHash}` + ) + const symbols = Object.getOwnPropertySymbols(transaction) + const entityIdSymbol = symbols.find( + (symbol) => symbol.toString() === 'Symbol(entityId)' + ) + const value = transaction[entityIdSymbol as any] + + return { + ...transaction, + entityId: value, + } + } + } catch (error) { + logger.error( + `Error storing or retrieving transaction data: ${error.message}` + ) + throw error + } +} + +export const getTransactionsByAddress = async ( + address: string +): Promise => { + return await transactionRepository + .search() + .where('address') + .equals(address) + .return.all() +} + +export const getStatusByTxHashOrEntityId = async ( + identifier: string +): Promise => { + const transactions = await transactionRepository + .search() + .where('txHash') + .equals(identifier) + .return.all() + + if (transactions.length === 0) { + const transaction = await transactionRepository.fetch(identifier) + if (transaction) { + return transaction.status + } + } + + if (transactions.length > 0) { + return transactions[0].status + } + return null +} + +export const getTransactionByEntityId = async ( + entityId: string +): Promise => { + const transactionsByEntityId = await transactionRepository.fetch(entityId) + if (transactionsByEntityId) { + return transactionsByEntityId + } + return null +} + +export const getTransactionByTxHash = async ( + txHash: string +): Promise => { + const transactionsByTxHash = await transactionRepository + .search() + .where('txHash') + .equals(txHash) + .return.all() + + if (transactionsByTxHash.length > 0) { + return transactionsByTxHash[0] + } + return null +} + +export async function findTransactionsByAddressAndStatus( + address: string, + status: string +) { + const transactions = await transactionRepository + .search() + .where('address') + .equals(address) + .and('status') + .equals(status) + .return.all() + logger.info( + `Found ${transactions.length} transactions for address: ${address} and status: ${status}` + ) + return transactions +} diff --git a/stash/swagger-output.json b/stash/swagger-output.json index 0f583c13..fac3dd2a 100644 --- a/stash/swagger-output.json +++ b/stash/swagger-output.json @@ -908,6 +908,187 @@ } } }, + "/tracing/tx/start": { + "post": { + "tags": [ + "Tracing" + ], + "summary": "Start tracing a transaction.", + "description": "Start tracing a transaction by providing transaction details.", + "parameters": [ + { + "name": "body", + "in": "body", + "description": "Transaction details", + "required": true, + "schema": { + "type": "object", + "properties": { + "txHash": { + "type": "string", + "example": "string" + }, + "address": { + "type": "string", + "example": "string" + }, + "type": { + "type": "string", + "example": "string" + }, + "chain": { + "type": "string", + "example": "string" + }, + "amount": { + "type": "string", + "example": "number" + }, + "asset_chainId": { + "type": "string", + "example": "string" + }, + "asset_address": { + "type": "string", + "example": "string" + } + } + } + } + ], + "responses": { + "200": { + "description": "Successful response with transaction details" + }, + "400": { + "description": "Validation error" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, + "/tracing/tx/{txHashOrEntityId}": { + "get": { + "tags": [ + "Tracing" + ], + "summary": "Get transaction status by txHash or entityId.", + "description": "Get the status of a transaction by providing the transaction hash or entity ID.", + "parameters": [ + { + "name": "txHashOrEntityId", + "in": "path", + "required": true, + "type": "string", + "description": "Transaction hash or entity ID" + } + ], + "responses": { + "200": { + "description": "Successful response with transaction status" + }, + "404": { + "description": "Transaction not found" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, + "/tracing/tx/listByAddress/{address}": { + "get": { + "tags": [ + "Tracing" + ], + "summary": "Get all transactions by address.", + "description": "Get all transactions associated with a specific address.", + "parameters": [ + { + "name": "address", + "in": "path", + "required": true, + "type": "string", + "description": "Address to get transactions for" + } + ], + "responses": { + "200": { + "description": "Successful response with transactions" + }, + "404": { + "description": "No transactions found for this address" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, + "/tracing/tx/listByAddress/{address}/{status}": { + "get": { + "tags": [ + "Tracing" + ], + "summary": "Get all transactions by address and status.", + "description": "Get all transactions associated with a specific address and status.", + "parameters": [ + { + "name": "address", + "in": "path", + "required": true, + "type": "string", + "description": "Address to get transactions for" + }, + { + "name": "status", + "in": "path", + "required": true, + "type": "string", + "description": "Status of the transactions to filter by" + } + ], + "responses": { + "200": { + "description": "Successful response with transactions" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, + "/tracing/tx/findByEntityId/{entityId}": { + "get": { + "tags": [ + "Tracing" + ], + "summary": "Get a transaction by entityId.", + "description": "Get a specific transaction by providing the entity ID.", + "parameters": [ + { + "name": "entityId", + "in": "path", + "required": true, + "type": "string", + "description": "Entity ID of the transaction" + } + ], + "responses": { + "200": { + "description": "Successful response with transaction details" + }, + "404": { + "description": "Transaction not found for this entityId" + }, + "500": { + "description": "Internal Server Error" + } + } + } + }, "/coinmarketcap/v1/summary": { "get": { "tags": [ diff --git a/stash/test/api/tracing.api.test.ts b/stash/test/api/tracing.api.test.ts new file mode 100644 index 00000000..aa631484 --- /dev/null +++ b/stash/test/api/tracing.api.test.ts @@ -0,0 +1,103 @@ +import { describe, expect, it, beforeAll } from "vitest"; +import supertest from "supertest"; +import app from '../../src/app'; +import logger from "../../src/util/Logger"; + +let transactionData: any; + +describe('TracingController', () => { + beforeAll(async () => { + const response = await supertest(app) + .post('/tracing/tx/start') + .send({ + txHash: '0x102', + address: '0x102', + type: 'deposit', + chain: 'Ethereum', + amount: '400000000000000000', + asset_chainId: '0x106', + asset_address: '0x107' + }); + transactionData = response.body; + }); + + it('should start tracing a transaction', () => { + expect(transactionData).toHaveProperty('transaction'); + expect(transactionData.transaction).toHaveProperty('txHash', '0x102'); + expect(transactionData.transaction).toHaveProperty('address', '0x102'); + expect(transactionData.transaction).toHaveProperty('type', 'deposit'); + expect(transactionData.transaction).toHaveProperty('chain', 'Ethereum'); + expect(transactionData.transaction).toHaveProperty('amount', '400000000000000000'); + expect(transactionData.transaction).toHaveProperty('asset_chainId', '0x106'); + expect(transactionData.transaction).toHaveProperty('asset_address', '0x107'); + expect(transactionData.transaction).toHaveProperty('entityId'); + expect(transactionData.transaction.entityId).not.toBe(''); + expect(transactionData.transaction).toHaveProperty('created'); + expect(transactionData.transaction.created).not.toBe(''); + expect(transactionData.transaction).toHaveProperty('updated'); + expect(transactionData.transaction.updated).not.toBe(''); }); + + describe('Query transactions', () => { + it('should get transaction status by txHash or entityId', async () => { + try { + const response = await supertest(app) + .get(`/tracing/tx/${transactionData.transaction.txHash}`) + .expect(200); + expect(response.body).toHaveProperty('status'); + } catch (error) { + logger.error('Error in get transaction status by txHash or entityId:', error.message); + throw error; + } + }); + + it('should get all transactions by address', async () => { + try { + const response = await supertest(app) + .get(`/tracing/tx/listByAddress/${transactionData.transaction.address}`) + .expect(200); + expect(response.body).toHaveProperty('transactions'); + expect(response.body.transactions).toBeInstanceOf(Array); + expect(response.body.transactions[0]).toHaveProperty('address', transactionData.transaction.address); + expect(response.body.transactions[0]).toHaveProperty('amount', transactionData.transaction.amount); + expect(response.body.transactions[0]).toHaveProperty('asset_address', transactionData.transaction.asset_address); + expect(response.body.transactions[0]).toHaveProperty('asset_chainId', transactionData.transaction.asset_chainId); + expect(response.body.transactions[0]).toHaveProperty('chain', transactionData.transaction.chain); + expect(response.body.transactions[0]).toHaveProperty('created', transactionData.transaction.created); + expect(response.body.transactions[0]).toHaveProperty('requestId', transactionData.transaction.requestId); + expect(response.body.transactions[0]).toHaveProperty('status', transactionData.transaction.status); + expect(response.body.transactions[0]).toHaveProperty('txHash', transactionData.transaction.txHash); + expect(response.body.transactions[0]).toHaveProperty('type', transactionData.transaction.type); + expect(response.body.transactions[0]).toHaveProperty('updated'); + } catch (error) { + logger.error('Error in get all transactions by address:', error.message); + throw error; + } + }); + + it('should get all transactions by address and status', async () => { + try { + const response = await supertest(app) + .get(`/tracing/tx/listByAddress/${transactionData.transaction.address}/L1_INITIATED`) + .expect(200); + expect(response.body).toBeInstanceOf(Array); + expect(response.body[0]).toHaveProperty('address', transactionData.transaction.address); + expect(response.body[0]).toHaveProperty('status', 'L1_INITIATED'); + } catch (error) { + logger.error('Error in get all transactions by address and status:', error.message); + throw error; + } + }); + + it('should find a transaction by entityId', async () => { + try { + const response = await supertest(app) + .get(`/tracing/tx/findByEntityId/${transactionData.transaction.entityId}`) + .expect(200); + expect(response.body).toHaveProperty('transaction'); + } catch (error) { + logger.error('Error in find a transaction by entityId:', error.message); + throw error; + } + }); + }); +}); \ No newline at end of file diff --git a/stash/test/l1.scraper.test.ts b/stash/test/l1.scraper.test.ts new file mode 100644 index 00000000..d635a895 --- /dev/null +++ b/stash/test/l1.scraper.test.ts @@ -0,0 +1,167 @@ +import { describe, expect, vi, beforeEach, it } from 'vitest' +import { + watchDepositAcceptedIntoQueue, + processRequests, +} from '../src/scraper/L1LogScraper' +import { transactionRepository } from '../src/repository/TransactionRepository' +import { timeseries } from '../src/connector/RedisConnector' +import logger from '../src/util/Logger' +import { holesky } from 'viem/chains' + +vi.mock('../src/repository/TransactionRepository') +vi.mock('../src/connector/RedisConnector') +vi.mock('../src/util/Logger') +vi.mock('../src/scraper/L1LogScraper', () => ({ + watchDepositAcceptedIntoQueue: vi.fn(), + processRequests: vi.fn(), +})) +let keepProcessing = true + +describe('L1LogScraper', () => { + beforeEach(() => { + vi.clearAllMocks() + keepProcessing = true + }) + + it('should update transaction status to L1_CONFIRMED on DepositAcceptedIntoQueue event', async () => { + const mockApi = {} + const mockPublicClient = { + getBlockNumber: vi.fn().mockResolvedValue(100n), + getContractEvents: vi.fn().mockResolvedValue([ + { + transactionHash: '0x123', + blockNumber: 100n, + args: { requestId: 1 }, + }, + ]), + } + vi.mocked(transactionRepository.search).mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + and: vi.fn().mockReturnThis(), + returnFirst: vi.fn().mockResolvedValue({ + txHash: '0x123', + status: 'L1_INITIATED', + type: 'deposit', + requestId: null, + updated: 0, + }), + }) + vi.mocked(transactionRepository.save).mockResolvedValue({}) + vi.mocked(timeseries.client.hget).mockResolvedValue('0') + vi.mocked(timeseries.client.hset).mockResolvedValue({}) + vi.mocked(logger.info).mockImplementation(() => {}) + vi.mocked(logger.error).mockImplementation(() => {}) + + vi.mocked(watchDepositAcceptedIntoQueue).mockImplementation(async () => { + await new Promise((resolve) => setTimeout(resolve, 100)) + // Simulate the calls that would trigger the spies + await mockPublicClient.getBlockNumber() + await mockPublicClient.getContractEvents() + await transactionRepository.search() + await transactionRepository.save({ + txHash: '0x123', + status: 'L1_CONFIRMED', + requestId: 1, + }) + await timeseries.client.hset() + }) + + await watchDepositAcceptedIntoQueue( + mockApi, + 'http://chain.url', + holesky, + 'Ethereum' + ) + + expect(mockPublicClient.getBlockNumber).toHaveBeenCalled() + expect(mockPublicClient.getContractEvents).toHaveBeenCalled() + expect(transactionRepository.search).toHaveBeenCalled() + expect(transactionRepository.save).toHaveBeenCalledWith( + expect.objectContaining({ + txHash: '0x123', + status: 'L1_CONFIRMED', + requestId: 1, + }) + ) + expect(timeseries.client.hset).toHaveBeenCalled() + }, 10000) + + describe('processRequests', () => { + const mockApi = { + query: { + rolldown: { + lastProcessedRequestOnL2: vi.fn(), + }, + }, + } as unknown as Promise + + const mockTransaction = { + requestId: 1, + txHash: '0x102', + address: '0x102', + created: 1725613967329, + updated: 1725613967329, + status: 'L1_CONFIRMED', + type: 'deposit', + chain: 'Ethereum', + amount: '400000000000000000', + asset_chainId: '0x106', + asset_address: '0x107', + } + + beforeEach(() => { + vi.clearAllMocks() + keepProcessing = true + }) + + it('should process transactions and update their status to PROCESSED', async () => { + mockApi.query.rolldown.lastProcessedRequestOnL2.mockResolvedValue(2) + vi.mocked(timeseries.client.hget).mockResolvedValue('0') + vi.mocked(transactionRepository.search).mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + and: vi.fn().mockReturnThis(), + gte: vi.fn().mockReturnThis(), + lte: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([mockTransaction]) }, + }) + vi.mocked(transactionRepository.save).mockResolvedValue(mockTransaction) + vi.mocked(timeseries.client.hset).mockResolvedValue({}) + vi.mocked(processRequests).mockImplementation(async (api, l1Chain) => { + await new Promise((resolve) => setTimeout(resolve, 100)) + await api.query.rolldown.lastProcessedRequestOnL2(l1Chain) + await transactionRepository.search() + await transactionRepository.save({ + requestId: 1, + txHash: '0x102', + address: '0x102', + created: 1725613967329, + updated: 1725613967329, + status: 'PROCESSED', + type: 'deposit', + chain: 'Ethereum', + amount: '400000000000000000', + asset_chainId: '0x106', + asset_address: '0x107', + }) + await timeseries.client.hset() + }) + const promise = processRequests(mockApi, 'Ethereum') + await new Promise((resolve) => setTimeout(resolve, 100)) + keepProcessing = false // Stop the loop + + await promise + + expect(mockApi.query.rolldown.lastProcessedRequestOnL2).toHaveBeenCalled() + expect(transactionRepository.search).toHaveBeenCalled() + expect(transactionRepository.save).toHaveBeenCalledWith( + expect.objectContaining({ + txHash: '0x102', + status: 'PROCESSED', + }) + ) + expect(timeseries.client.hset).toHaveBeenCalled() + }) + }) +}) diff --git a/stash/test/tracing.test.ts b/stash/test/tracing.test.ts new file mode 100644 index 00000000..4fa19102 --- /dev/null +++ b/stash/test/tracing.test.ts @@ -0,0 +1,121 @@ +import { describe, expect, vi, beforeEach, it } from "vitest"; +import { + startTracingTransaction, + getTransactionsByAddress, + getStatusByTxHashOrEntityId, + getTransactionByEntityId, + getTransactionByTxHash, + findTransactionsByAddressAndStatus, +} from '../src/service/TracingService' +import { transactionRepository } from '../src/repository/TransactionRepository' + +vi.mock('../src/repository/TransactionRepository') +vi.mock('../src/util/Logger') + +describe('TracingService', () => { + const mockTransaction = { + requestId: null, + txHash: '0x102', + address: '0x102', + created: 1725613967329, + updated: 1725613967329, + status: 'L1_INITIATED', + type: 'deposit', + chain: 'Ethereum', + amount: '400000000000000000', + asset_chainId: '0x106', + asset_address: '0x107', + } + + beforeEach(() => { + vi.clearAllMocks() + }) + + it('startTracingTransaction should start tracing a new transaction', async () => { + transactionRepository.search.mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + and: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([]) }, + }) + transactionRepository.save.mockResolvedValue(mockTransaction) + + const result = await startTracingTransaction(mockTransaction) + + expect(transactionRepository.search).toHaveBeenCalled() + expect(transactionRepository.save).toHaveBeenCalledWith( + expect.objectContaining({ + txHash: '0x102', + address: '0x102', + status: 'L1_INITIATED', + }) + ) + expect(result).toHaveProperty('txHash', '0x102') + expect(result).toHaveProperty('status', 'L1_INITIATED') + }) + + it('getTransactionsByAddress should return transactions for a given address', async () => { + transactionRepository.search.mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([mockTransaction]) }, + }) + + const result = await getTransactionsByAddress('0x102') + + expect(transactionRepository.search).toHaveBeenCalled() + expect(result).toEqual([mockTransaction]) + }) + + it('getStatusByTxHashOrEntityId should return status for a given txHash', async () => { + transactionRepository.search.mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([mockTransaction]) }, + }) + + const result = await getStatusByTxHashOrEntityId('0x102') + + expect(transactionRepository.search).toHaveBeenCalled() + expect(result).toBe('L1_INITIATED') + }) + + it('getTransactionByEntityId should return transaction for a given entityId', async () => { + transactionRepository.fetch.mockResolvedValue(mockTransaction) + + const result = await getTransactionByEntityId('entityId') + + expect(transactionRepository.fetch).toHaveBeenCalledWith('entityId') + expect(result).toEqual(mockTransaction) + }) + + it('getTransactionByTxHash should return transaction for a given txHash', async () => { + transactionRepository.search.mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([mockTransaction]) }, + }) + + const result = await getTransactionByTxHash('0x102') + + expect(transactionRepository.search).toHaveBeenCalled() + expect(result).toEqual(mockTransaction) + }) + + it('findTransactionsByAddressAndStatus should return transactions for a given address and status', async () => { + transactionRepository.search.mockReturnValue({ + where: vi.fn().mockReturnThis(), + equals: vi.fn().mockReturnThis(), + and: vi.fn().mockReturnThis(), + return: { all: vi.fn().mockResolvedValue([mockTransaction]) }, + }) + + const result = await findTransactionsByAddressAndStatus( + '0x102', + 'L1_INITIATED' + ) + + expect(transactionRepository.search).toHaveBeenCalled() + expect(result).toEqual([mockTransaction]) + }) +}) \ No newline at end of file diff --git a/stash/yarn.lock b/stash/yarn.lock index e3922bde..fcae3fc0 100644 --- a/stash/yarn.lock +++ b/stash/yarn.lock @@ -35,7 +35,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.19.4, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0": +"@babel/runtime@npm:^7.19.4, @babel/runtime@npm:^7.21.0": version: 7.24.8 resolution: "@babel/runtime@npm:7.24.8" dependencies: @@ -44,6 +44,15 @@ __metadata: languageName: node linkType: hard +"@babel/runtime@npm:^7.23.2": + version: 7.25.6 + resolution: "@babel/runtime@npm:7.25.6" + dependencies: + regenerator-runtime: ^0.14.0 + checksum: ee1a69d3ac7802803f5ee6a96e652b78b8addc28c6a38c725a4ad7d61a059d9e6cb9f6550ed2f63cce67a1bd82e0b1ef66a1079d895be6bfb536a5cfbd9ccc32 + languageName: node + linkType: hard + "@babel/types@npm:^7.8.3": version: 7.24.9 resolution: "@babel/types@npm:7.24.9" @@ -69,6 +78,20 @@ __metadata: languageName: node linkType: hard +"@coinbase/wallet-sdk@npm:4.0.4": + version: 4.0.4 + resolution: "@coinbase/wallet-sdk@npm:4.0.4" + dependencies: + buffer: ^6.0.3 + clsx: ^1.2.1 + eventemitter3: ^5.0.1 + keccak: ^3.0.3 + preact: ^10.16.0 + sha.js: ^2.4.11 + checksum: 002d03d791683a15b465a285d7293a7994684f6f91d67c01b52ee9a07ba62f555a12d5c9471c964ccae0df048190f9c2e82929aeba9247e6d97ad1a9e9dd4132 + languageName: node + linkType: hard + "@colors/colors@npm:1.5.0": version: 1.5.0 resolution: "@colors/colors@npm:1.5.0" @@ -293,7 +316,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/tx@npm:^4.1.2": +"@ethereumjs/tx@npm:^4.1.2, @ethereumjs/tx@npm:^4.2.0": version: 4.2.0 resolution: "@ethereumjs/tx@npm:4.2.0" dependencies: @@ -537,14 +560,74 @@ __metadata: languageName: node linkType: hard -"@metamask/object-multiplex@npm:^1.1.0": - version: 1.3.0 - resolution: "@metamask/object-multiplex@npm:1.3.0" +"@lit-labs/ssr-dom-shim@npm:^1.0.0, @lit-labs/ssr-dom-shim@npm:^1.1.0": + version: 1.2.1 + resolution: "@lit-labs/ssr-dom-shim@npm:1.2.1" + checksum: 5667c44f58e16edaa257fc3ae7f752250d5250d4eb1d071b65df0f1fce0b90b42e8528787cc2673998d76d993440143a2a20c3358ce125c62df4cd193784de8d + languageName: node + linkType: hard + +"@lit/reactive-element@npm:^1.3.0, @lit/reactive-element@npm:^1.6.0": + version: 1.6.3 + resolution: "@lit/reactive-element@npm:1.6.3" + dependencies: + "@lit-labs/ssr-dom-shim": ^1.0.0 + checksum: 79b58631c38effeabad090070324431da8a22cf0ff665f5e4de35e4d791f984742b3d340c9c7fce996d1124a8da95febc582471b4c237236c770b1300b56ef6e + languageName: node + linkType: hard + +"@metamask/eth-json-rpc-provider@npm:^1.0.0": + version: 1.0.1 + resolution: "@metamask/eth-json-rpc-provider@npm:1.0.1" + dependencies: + "@metamask/json-rpc-engine": ^7.0.0 + "@metamask/safe-event-emitter": ^3.0.0 + "@metamask/utils": ^5.0.1 + checksum: ff97648b002d2889bd020c03abc26137cf068df3280e46144b5333c1b294f35f5099361343825f900ef20b9dcb6819495830b7a99eb1cbfbd671e5b11c0dfde1 + languageName: node + linkType: hard + +"@metamask/json-rpc-engine@npm:^7.0.0": + version: 7.3.3 + resolution: "@metamask/json-rpc-engine@npm:7.3.3" + dependencies: + "@metamask/rpc-errors": ^6.2.1 + "@metamask/safe-event-emitter": ^3.0.0 + "@metamask/utils": ^8.3.0 + checksum: 7bab8b4d2341a6243ba451bc58283f0a6905b09f7257857859848a51a795444ca6899b1a6908b15f8ed236fb574ab85a630c9cb28d127ab52c4630e496c16006 + languageName: node + linkType: hard + +"@metamask/json-rpc-engine@npm:^8.0.1, @metamask/json-rpc-engine@npm:^8.0.2": + version: 8.0.2 + resolution: "@metamask/json-rpc-engine@npm:8.0.2" + dependencies: + "@metamask/rpc-errors": ^6.2.1 + "@metamask/safe-event-emitter": ^3.0.0 + "@metamask/utils": ^8.3.0 + checksum: c240d298ad503d93922a94a62cf59f0344b6d6644a523bc8ea3c0f321bea7172b89f2747a5618e2861b2e8152ae5086b76f391a10e4566529faa50b8850c051d + languageName: node + linkType: hard + +"@metamask/json-rpc-middleware-stream@npm:^7.0.1": + version: 7.0.2 + resolution: "@metamask/json-rpc-middleware-stream@npm:7.0.2" + dependencies: + "@metamask/json-rpc-engine": ^8.0.2 + "@metamask/safe-event-emitter": ^3.0.0 + "@metamask/utils": ^8.3.0 + readable-stream: ^3.6.2 + checksum: ff11ad3ff0ec27530efc53c4e6543661648f437dacdd58797449307e20dbc428b479cd8d1e9767797268b98d0445bd6f1986820a8c855faeef01d5c03b55323b + languageName: node + linkType: hard + +"@metamask/object-multiplex@npm:^2.0.0": + version: 2.0.0 + resolution: "@metamask/object-multiplex@npm:2.0.0" dependencies: - end-of-stream: ^1.4.4 once: ^1.4.0 - readable-stream: ^2.3.3 - checksum: 4a2b48fc0e1a8f536edbab9f37b637cd91102538ad76ce07bdfad99b90d98b34585a0e5afa62ca9c1d550a0016347568ff0d635e5bf8cfa266d049e1c0ebedc8 + readable-stream: ^3.6.2 + checksum: 54baea752a3ac7c2742c376512e00d4902d383e9da8787574d3b21eb0081523309e24e3915a98f3ae0341d65712b6832d2eb7eeb862f4ef0da1ead52dcde5387 languageName: node linkType: hard @@ -557,33 +640,33 @@ __metadata: languageName: node linkType: hard -"@metamask/post-message-stream@npm:^6.1.0": - version: 6.2.0 - resolution: "@metamask/post-message-stream@npm:6.2.0" +"@metamask/providers@npm:16.1.0": + version: 16.1.0 + resolution: "@metamask/providers@npm:16.1.0" dependencies: - "@metamask/utils": ^5.0.0 - readable-stream: 2.3.3 - checksum: 657cdb2dd61a46a4da7f036a97ef0aa9ad8e918d8f8c0fd620eaede4a32c2ff909738a7dfb2b1e6099e7771fd03c3466b60fedab56e39a5cc5507927758e3cb7 + "@metamask/json-rpc-engine": ^8.0.1 + "@metamask/json-rpc-middleware-stream": ^7.0.1 + "@metamask/object-multiplex": ^2.0.0 + "@metamask/rpc-errors": ^6.2.1 + "@metamask/safe-event-emitter": ^3.1.1 + "@metamask/utils": ^8.3.0 + detect-browser: ^5.2.0 + extension-port-stream: ^3.0.0 + fast-deep-equal: ^3.1.3 + is-stream: ^2.0.0 + readable-stream: ^3.6.2 + webextension-polyfill: ^0.10.0 + checksum: 85e40140f342a38112c3d7cee436751a2be4c575cc4f815ab48a73b549abc2d756bf4a10e4b983e91dbd38076601f992531edb6d8d674aebceae32ef7e299275 languageName: node linkType: hard -"@metamask/providers@npm:^10.2.1": - version: 10.2.1 - resolution: "@metamask/providers@npm:10.2.1" +"@metamask/rpc-errors@npm:^6.2.1": + version: 6.3.1 + resolution: "@metamask/rpc-errors@npm:6.3.1" dependencies: - "@metamask/object-multiplex": ^1.1.0 - "@metamask/safe-event-emitter": ^2.0.0 - "@types/chrome": ^0.0.136 - detect-browser: ^5.2.0 - eth-rpc-errors: ^4.0.2 - extension-port-stream: ^2.0.1 - fast-deep-equal: ^2.0.1 - is-stream: ^2.0.0 - json-rpc-engine: ^6.1.0 - json-rpc-middleware-stream: ^4.2.1 - pump: ^3.0.0 - webextension-polyfill-ts: ^0.25.0 - checksum: e88b2db8c4673cc6a7e47d9f0531df3fac73f05f8e9ff6d02c3420dfb3c7a82335d9c44876f2d472c44eac36d66491d2022be4f39600bee561d5de8ad59c5b07 + "@metamask/utils": ^9.0.0 + fast-safe-stringify: ^2.0.6 + checksum: 8761f5c0161cb3b342abd3ccccbd7b792f36a987e1f22c3f89b1bd29f72a2e35a2c91b58164fdd9dc3e5b67157500dcbdb5d04245117c14310c34cf42f7b8463 languageName: node linkType: hard @@ -594,42 +677,41 @@ __metadata: languageName: node linkType: hard -"@metamask/safe-event-emitter@npm:^3.0.0": +"@metamask/safe-event-emitter@npm:^3.0.0, @metamask/safe-event-emitter@npm:^3.1.1": version: 3.1.1 resolution: "@metamask/safe-event-emitter@npm:3.1.1" checksum: e24db4d7c20764bfc5b025065f92518c805f0ffb1da4820078b8cff7dcae964c0f354cf053fcb7ac659de015d5ffdf21aae5e8d44e191ee8faa9066855f22653 languageName: node linkType: hard -"@metamask/sdk-communication-layer@npm:0.16.0": - version: 0.16.0 - resolution: "@metamask/sdk-communication-layer@npm:0.16.0" +"@metamask/sdk-communication-layer@npm:0.27.0": + version: 0.27.0 + resolution: "@metamask/sdk-communication-layer@npm:0.27.0" dependencies: bufferutil: ^4.0.8 date-fns: ^2.29.3 debug: ^4.3.4 - utf-8-validate: ^6.0.3 + utf-8-validate: ^5.0.2 uuid: ^8.3.2 peerDependencies: - cross-fetch: ^3.1.5 + cross-fetch: ^4.0.0 eciesjs: ^0.3.16 eventemitter2: ^6.4.7 - readable-stream: ^3.5.0 + readable-stream: ^3.6.2 socket.io-client: ^4.5.1 - checksum: e151d9cdb8cf037669ea6c6aa2fc05834308680516b6047505870885cacd0d489f4f2338ab5b2cb54fd556de0f14412c8300e31e12a9537fa2dba211c0e513a0 + checksum: 19e68c808d36b783e27a6bdc5439a60aedb8a298da66c7496e73c173807abccdf240b614d8bc283b7b7e8e7d438ed846b91b42460fe8212e7f20122501df3e5e languageName: node linkType: hard -"@metamask/sdk-install-modal-web@npm:0.16.0": - version: 0.16.0 - resolution: "@metamask/sdk-install-modal-web@npm:0.16.0" +"@metamask/sdk-install-modal-web@npm:0.26.5": + version: 0.26.5 + resolution: "@metamask/sdk-install-modal-web@npm:0.26.5" dependencies: qr-code-styling: ^1.6.0-rc.1 peerDependencies: - i18next: 22.5.1 + i18next: 23.11.5 react: ^18.2.0 react-dom: ^18.2.0 - react-i18next: ^13.2.2 react-native: "*" peerDependenciesMeta: react: @@ -638,20 +720,18 @@ __metadata: optional: true react-native: optional: true - checksum: a465080786041fa3a95fd0ee4d7353d0c7699302dff6711bb76bef529c5d0cec37b35533660f17c38498588ee53e8a26789ee6e4ba848b0ddbed4da3406d9295 + checksum: 3aba8d39bac0d320727b7abfcd803d843906962cea28685e946acba3f198b14d0a672ac8dfd6ec97a7d0efd4f92d00dae956af8872ca4cb2e677f91342bc58b0 languageName: node linkType: hard -"@metamask/sdk@npm:0.16.0": - version: 0.16.0 - resolution: "@metamask/sdk@npm:0.16.0" +"@metamask/sdk@npm:0.27.0": + version: 0.27.0 + resolution: "@metamask/sdk@npm:0.27.0" dependencies: "@metamask/onboarding": ^1.0.1 - "@metamask/post-message-stream": ^6.1.0 - "@metamask/providers": ^10.2.1 - "@metamask/sdk-communication-layer": 0.16.0 - "@metamask/sdk-install-modal-web": 0.16.0 - "@react-native-async-storage/async-storage": ^1.17.11 + "@metamask/providers": 16.1.0 + "@metamask/sdk-communication-layer": 0.27.0 + "@metamask/sdk-install-modal-web": 0.26.5 "@types/dom-screen-wake-lock": ^1.0.0 bowser: ^2.9.0 cross-fetch: ^4.0.0 @@ -659,14 +739,13 @@ __metadata: eciesjs: ^0.3.15 eth-rpc-errors: ^4.0.3 eventemitter2: ^6.4.7 - extension-port-stream: ^2.0.1 - i18next: 22.5.1 + i18next: 23.11.5 i18next-browser-languagedetector: 7.1.0 obj-multiplex: ^1.0.0 pump: ^3.0.0 qrcode-terminal-nooctal: ^0.12.1 react-native-webview: ^11.26.0 - readable-stream: ^3.5.0 + readable-stream: ^3.6.2 rollup-plugin-visualizer: ^5.9.2 socket.io-client: ^4.5.1 util: ^0.12.4 @@ -674,19 +753,23 @@ __metadata: peerDependencies: react: ^18.2.0 react-dom: ^18.2.0 - react-native: "*" peerDependenciesMeta: react: optional: true react-dom: optional: true - react-native: - optional: true - checksum: 1f445ba216fbf360f957cad20475b006d52b9715140e93bccf9b462558b1308a5fb3f1ad3b7e924b365f4090756e8806e6e34eb6baf4c1ca2b509f6327b57a0b + checksum: 25c2c988567bb62f4c9cc9493e333f4754a5ba68e1b7adfaaf8ea5bae38da5300712e5d7dc286f7c1d5140b01862f5ddb7105d59f4f4ef4d5e6d635ee6385578 + languageName: node + linkType: hard + +"@metamask/superstruct@npm:^3.0.0, @metamask/superstruct@npm:^3.1.0": + version: 3.1.0 + resolution: "@metamask/superstruct@npm:3.1.0" + checksum: 00e4d0c0aae8b25ccc1885c1db0bb4ed1590010570140c255e4deee3bf8a10c859c8fce5e475b4ae09c8a56316207af87585b91f7f5a5c028d668ccd111f19e3 languageName: node linkType: hard -"@metamask/utils@npm:^5.0.0": +"@metamask/utils@npm:^5.0.1": version: 5.0.2 resolution: "@metamask/utils@npm:5.0.2" dependencies: @@ -699,6 +782,125 @@ __metadata: languageName: node linkType: hard +"@metamask/utils@npm:^8.3.0": + version: 8.5.0 + resolution: "@metamask/utils@npm:8.5.0" + dependencies: + "@ethereumjs/tx": ^4.2.0 + "@metamask/superstruct": ^3.0.0 + "@noble/hashes": ^1.3.1 + "@scure/base": ^1.1.3 + "@types/debug": ^4.1.7 + debug: ^4.3.4 + pony-cause: ^2.1.10 + semver: ^7.5.4 + uuid: ^9.0.1 + checksum: e8eac1c796c3f6b623be3c2736e8682248620f666b180f5c12ce56ee09587d4e28b6811862139a05c7a1bec91415f10ccf0516f3cdf342f88b0189d2a057c24b + languageName: node + linkType: hard + +"@metamask/utils@npm:^9.0.0": + version: 9.2.1 + resolution: "@metamask/utils@npm:9.2.1" + dependencies: + "@ethereumjs/tx": ^4.2.0 + "@metamask/superstruct": ^3.1.0 + "@noble/hashes": ^1.3.1 + "@scure/base": ^1.1.3 + "@types/debug": ^4.1.7 + debug: ^4.3.4 + pony-cause: ^2.1.10 + semver: ^7.5.4 + uuid: ^9.0.1 + checksum: 1a0c842d6fe490bb068c74c6c0684a3e5fabdadcf653b1c83bc69832e9e515fbae5809be20ddfc5c31715cd3d90cf18b73088d9c81f99028ff7b2c7160358c4e + languageName: node + linkType: hard + +"@motionone/animation@npm:^10.15.1, @motionone/animation@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/animation@npm:10.18.0" + dependencies: + "@motionone/easing": ^10.18.0 + "@motionone/types": ^10.17.1 + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 841cb9f4843a89e5e4560b9f960f52cbe78afc86f87c769f71e9edb3aadd53fb87982b7e11914428f228b29fd580756be531369c2ffac06432550afa4e87d1c3 + languageName: node + linkType: hard + +"@motionone/dom@npm:^10.16.2, @motionone/dom@npm:^10.16.4": + version: 10.18.0 + resolution: "@motionone/dom@npm:10.18.0" + dependencies: + "@motionone/animation": ^10.18.0 + "@motionone/generators": ^10.18.0 + "@motionone/types": ^10.17.1 + "@motionone/utils": ^10.18.0 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: b11f5366b05d1a93d7df0c91923f0339412e5eb65de2010b1d0484bcbb8027d352334722ce6b839f1be776585d849d1bcbee9d96b2445f6bb6e82301fe67bbeb + languageName: node + linkType: hard + +"@motionone/easing@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/easing@npm:10.18.0" + dependencies: + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 6bd37f7a9d5a88f868cc0ad6e47d2ba8d9fefd7da84fccfea7ed77ec08c2e6d1e42df88dda462665102a5cf03f748231a1a077de7054b5a8ccb0fbf36f61b1e7 + languageName: node + linkType: hard + +"@motionone/generators@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/generators@npm:10.18.0" + dependencies: + "@motionone/types": ^10.17.1 + "@motionone/utils": ^10.18.0 + tslib: ^2.3.1 + checksum: 51a0e075681697b11d0771998cac8c76a745f00141502f81adb953896992b7f49478965e4afe696bc83361afaae8d2f1057d71c25b21035fe67258ff73764f1c + languageName: node + linkType: hard + +"@motionone/svelte@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/svelte@npm:10.16.4" + dependencies: + "@motionone/dom": ^10.16.4 + tslib: ^2.3.1 + checksum: 699e20955ea832bcf32d410ae9f88edf61a5c2cf2b56527119ab1df6fecbf2632b62d541743d0f6d278fd700a15a20b9eb7c8aa5266e7aed5e113b8f8f75b863 + languageName: node + linkType: hard + +"@motionone/types@npm:^10.15.1, @motionone/types@npm:^10.17.1": + version: 10.17.1 + resolution: "@motionone/types@npm:10.17.1" + checksum: 3fa74db64e371e61a7f7669d7d541d11c9a8dd871032d59c69041e3b2e07a67ad2ed8767cb9273bac90eed4e1f76efc1f14c8673c2e9a288f6070ee0fef64a25 + languageName: node + linkType: hard + +"@motionone/utils@npm:^10.15.1, @motionone/utils@npm:^10.18.0": + version: 10.18.0 + resolution: "@motionone/utils@npm:10.18.0" + dependencies: + "@motionone/types": ^10.17.1 + hey-listen: ^1.0.8 + tslib: ^2.3.1 + checksum: a27f9afde693a0cbbbcb33962b12bbe40dd2cfa514b0732f3c7953c5ef4beed738e1e8172a2de89e3b9f74a253ef0a70d7f3efb730be97b77d7176a3ffacb67a + languageName: node + linkType: hard + +"@motionone/vue@npm:^10.16.2": + version: 10.16.4 + resolution: "@motionone/vue@npm:10.16.4" + dependencies: + "@motionone/dom": ^10.16.4 + tslib: ^2.3.1 + checksum: 746e38d0ee831829bfac2ce471f3d98a9e37bd8cbdf2706fa3becce69c17f51180a1ee47582d97758d68aafdfc9a187ab47ff216c77254ac994287dabcf266c1 + languageName: node + linkType: hard + "@noble/curves@npm:1.4.0": version: 1.4.0 resolution: "@noble/curves@npm:1.4.0" @@ -724,6 +926,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:~1.5.0": + version: 1.5.0 + resolution: "@noble/hashes@npm:1.5.0" + checksum: 9cc031d5c888c455bfeef76af649b87f75380a4511405baea633c1e4912fd84aff7b61e99716f0231d244c9cfeda1fafd7d718963e6a0c674ed705e9b1b4f76b + languageName: node + linkType: hard + "@nodelib/fs.scandir@npm:2.1.5": version: 2.1.5 resolution: "@nodelib/fs.scandir@npm:2.1.5" @@ -773,6 +982,151 @@ __metadata: languageName: node linkType: hard +"@parcel/watcher-android-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-android-arm64@npm:2.4.1" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-arm64@npm:2.4.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-darwin-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-darwin-x64@npm:2.4.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-freebsd-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-freebsd-x64@npm:2.4.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-glibc@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-arm64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-arm64-musl@npm:2.4.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-glibc@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-glibc@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@parcel/watcher-linux-x64-musl@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-linux-x64-musl@npm:2.4.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@parcel/watcher-wasm@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-wasm@npm:2.4.1" + dependencies: + is-glob: ^4.0.3 + micromatch: ^4.0.5 + napi-wasm: ^1.1.0 + checksum: 8ac9585b5aac43d7125ea326482b733fbe4564ed68846624647a93899885290a5a3e26c71d16adfc43dec98a69ee73256aa714f53b430be1ef501b6c69973b2e + languageName: node + linkType: hard + +"@parcel/watcher-win32-arm64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-arm64@npm:2.4.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@parcel/watcher-win32-ia32@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-ia32@npm:2.4.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@parcel/watcher-win32-x64@npm:2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher-win32-x64@npm:2.4.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@parcel/watcher@npm:^2.4.1": + version: 2.4.1 + resolution: "@parcel/watcher@npm:2.4.1" + dependencies: + "@parcel/watcher-android-arm64": 2.4.1 + "@parcel/watcher-darwin-arm64": 2.4.1 + "@parcel/watcher-darwin-x64": 2.4.1 + "@parcel/watcher-freebsd-x64": 2.4.1 + "@parcel/watcher-linux-arm-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-glibc": 2.4.1 + "@parcel/watcher-linux-arm64-musl": 2.4.1 + "@parcel/watcher-linux-x64-glibc": 2.4.1 + "@parcel/watcher-linux-x64-musl": 2.4.1 + "@parcel/watcher-win32-arm64": 2.4.1 + "@parcel/watcher-win32-ia32": 2.4.1 + "@parcel/watcher-win32-x64": 2.4.1 + detect-libc: ^1.0.3 + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^7.0.0 + node-gyp: latest + dependenciesMeta: + "@parcel/watcher-android-arm64": + optional: true + "@parcel/watcher-darwin-arm64": + optional: true + "@parcel/watcher-darwin-x64": + optional: true + "@parcel/watcher-freebsd-x64": + optional: true + "@parcel/watcher-linux-arm-glibc": + optional: true + "@parcel/watcher-linux-arm64-glibc": + optional: true + "@parcel/watcher-linux-arm64-musl": + optional: true + "@parcel/watcher-linux-x64-glibc": + optional: true + "@parcel/watcher-linux-x64-musl": + optional: true + "@parcel/watcher-win32-arm64": + optional: true + "@parcel/watcher-win32-ia32": + optional: true + "@parcel/watcher-win32-x64": + optional: true + checksum: 4da70551da27e565c726b0bbd5ba5afcb2bca36dfd8619a649f0eaa41f693ddd1d630c36e53bc083895d71a3e28bc4199013e557cd13c7af6ccccab28ceecbff + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -1438,14 +1792,86 @@ __metadata: languageName: node linkType: hard -"@react-native-async-storage/async-storage@npm:^1.17.11": - version: 1.24.0 - resolution: "@react-native-async-storage/async-storage@npm:1.24.0" +"@redis/bloom@npm:1.2.0": + version: 1.2.0 + resolution: "@redis/bloom@npm:1.2.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 8c214227287d6b278109098bca00afc601cf84f7da9c6c24f4fa7d3854b946170e5893aa86ed607ba017a4198231d570541c79931b98b6d50b262971022d1d6c + languageName: node + linkType: hard + +"@redis/client@npm:1.6.0": + version: 1.6.0 + resolution: "@redis/client@npm:1.6.0" dependencies: - merge-options: ^3.0.4 + cluster-key-slot: 1.1.2 + generic-pool: 3.9.0 + yallist: 4.0.0 + checksum: c01c89a793541dc6908a97f375fec3ac28bed7f92b1c20351a3073ce75c0263998a30c3316cbb76e6a4403059d9982d40aec0bc8f1b3cab43615edaaf05980da + languageName: node + linkType: hard + +"@redis/graph@npm:1.1.1": + version: 1.1.1 + resolution: "@redis/graph@npm:1.1.1" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: caf9b9a3ff82a08ae543c356a3fed548399ae79aba5ed08ce6cf1b522b955eb5cee4406b0ed0c6899345f8fbc06dfd6cd51304ae8422c3ebbc468f53294dc509 + languageName: node + linkType: hard + +"@redis/json@npm:1.0.7": + version: 1.0.7 + resolution: "@redis/json@npm:1.0.7" peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 - checksum: 7e56a2e97f48332f57c56ebf473b763c7ca2b1ef82f4b5f8e1c73350231ec91b8eafc4e4d1f972c4c1005da0d304816fa725dc6f07a8a7543e90f8bd16c22ab4 + "@redis/client": ^1.0.0 + checksum: a84d51c06a2af9a42eff5a6db795e7c0f7ada27d958f5d762b6f9778f413399dbe6a0c2ab00dd7ccc5fdab5f2940afbab4a56c2b1c284a2326d0f79965d5bba1 + languageName: node + linkType: hard + +"@redis/search@npm:1.2.0": + version: 1.2.0 + resolution: "@redis/search@npm:1.2.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 256ddf8b30f216b605e571c9085e0efd5e3b43229b57db8ba0eea3376540ada437b68509c3bb0354e3c784f5fa1b825593cc602ebbfc5cbfa9e46d5c7be67eb6 + languageName: node + linkType: hard + +"@redis/time-series@npm:1.1.0": + version: 1.1.0 + resolution: "@redis/time-series@npm:1.1.0" + peerDependencies: + "@redis/client": ^1.0.0 + checksum: 785f024e1c83866708beb254f765e561ccd6e6caad61b697223b3355ee92ca1e99a4d312c4ce03a3d6a29a223f38a2ec844c80b47990fa3bd9ddc56a30c1376f + languageName: node + linkType: hard + +"@safe-global/safe-apps-provider@npm:0.18.3": + version: 0.18.3 + resolution: "@safe-global/safe-apps-provider@npm:0.18.3" + dependencies: + "@safe-global/safe-apps-sdk": ^9.1.0 + events: ^3.3.0 + checksum: e208df42fe49474d54847d8edd44efb601b5aafaf9e25537500db7fefb1172201a62f577c749f424b34932439dd7ebe461d33b23075cf6b80fb35ef841017a30 + languageName: node + linkType: hard + +"@safe-global/safe-apps-sdk@npm:9.1.0, @safe-global/safe-apps-sdk@npm:^9.1.0": + version: 9.1.0 + resolution: "@safe-global/safe-apps-sdk@npm:9.1.0" + dependencies: + "@safe-global/safe-gateway-typescript-sdk": ^3.5.3 + viem: ^2.1.1 + checksum: e56c3fe83f52667b370072807468b011e9f3e6d690126af4cc5b13ee1544dd5a91b4b3e962d45d2dab065fc4401ef57c350896a9f43c70a9fb3269249f265d72 + languageName: node + linkType: hard + +"@safe-global/safe-gateway-typescript-sdk@npm:^3.5.3": + version: 3.22.2 + resolution: "@safe-global/safe-gateway-typescript-sdk@npm:3.22.2" + checksum: 75131db9db3c91a7d64773d793e1e8555adfffec4138be71a4f2a5c3daacfa461bf16fd8f8b3324aa8d3d9091c1f6315c41e7decdecd1604bfa4318c6b87d354 languageName: node linkType: hard @@ -1456,6 +1882,13 @@ __metadata: languageName: node linkType: hard +"@scure/base@npm:^1.1.3, @scure/base@npm:~1.1.8": + version: 1.1.8 + resolution: "@scure/base@npm:1.1.8" + checksum: 1fc8a355ba68663c0eb430cf6a2c5ff5af790c347c1ba1953f344e8681ab37e37e2545e495f7f971b0245727d710fea8c1e57d232d0c6c543cbed4965c7596a1 + languageName: node + linkType: hard + "@scure/bip32@npm:1.4.0": version: 1.4.0 resolution: "@scure/bip32@npm:1.4.0" @@ -1477,6 +1910,16 @@ __metadata: languageName: node linkType: hard +"@scure/bip39@npm:1.4.0": + version: 1.4.0 + resolution: "@scure/bip39@npm:1.4.0" + dependencies: + "@noble/hashes": ~1.5.0 + "@scure/base": ~1.1.8 + checksum: 211f2c01361993bfe54c0e4949f290224381457c7f76d7cd51d6a983f3f4b6b9f85adfd0e623977d777ed80417a5fe729eb19dd34e657147810a0e58a8e7b9e0 + languageName: node + linkType: hard + "@sideway/address@npm:^4.1.5": version: 4.1.5 resolution: "@sideway/address@npm:4.1.5" @@ -1507,6 +1950,176 @@ __metadata: languageName: node linkType: hard +"@stablelib/aead@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/aead@npm:1.0.1" + checksum: 1a6f68d138f105d17dd65349751515bd252ab0498c77255b8555478d28415600dde493f909eb718245047a993f838dfae546071e1687566ffb7b8c3e10c918d9 + languageName: node + linkType: hard + +"@stablelib/binary@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/binary@npm:1.0.1" + dependencies: + "@stablelib/int": ^1.0.1 + checksum: dca9b98eb1f56a4002b5b9e7351fbc49f3d8616af87007c01e833bd763ac89214eb5f3b7e18673c91ce59d4a0e4856a2eb661ace33d39f17fb1ad267271fccd8 + languageName: node + linkType: hard + +"@stablelib/bytes@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/bytes@npm:1.0.1" + checksum: 456267e08c3384abcb71d3ad3e97a6f99185ad754bac016f501ebea4e4886f37900589143b57e33bdbbf513a92fc89368c15dd4517e0540d0bdc79ecdf9dd087 + languageName: node + linkType: hard + +"@stablelib/chacha20poly1305@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha20poly1305@npm:1.0.1" + dependencies: + "@stablelib/aead": ^1.0.1 + "@stablelib/binary": ^1.0.1 + "@stablelib/chacha": ^1.0.1 + "@stablelib/constant-time": ^1.0.1 + "@stablelib/poly1305": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 81f1a32330838d31e4dc3144d76eba7244b56d9ea38c1f604f2c34d93ed8e67e9a6167d2cfd72254c13cc46dfc1f5ce5157b37939a575295d69d9144abb4e4fb + languageName: node + linkType: hard + +"@stablelib/chacha@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/chacha@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: f061f36c4ca4bf177dd7cac11e7c65ced164f141b6065885141ae5a55f32e16ba0209aefcdcc966aef013f1da616ce901a3a80653b4b6f833cf7e3397ae2d6bd + languageName: node + linkType: hard + +"@stablelib/constant-time@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/constant-time@npm:1.0.1" + checksum: dba4f4bf508de2ff15f7f0cbd875e70391aa3ba3698290fe1ed2feb151c243ba08a90fc6fb390ec2230e30fcc622318c591a7c0e35dcb8150afb50c797eac3d7 + languageName: node + linkType: hard + +"@stablelib/ed25519@npm:^1.0.2": + version: 1.0.3 + resolution: "@stablelib/ed25519@npm:1.0.3" + dependencies: + "@stablelib/random": ^1.0.2 + "@stablelib/sha512": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: e18279de078edac67396ba07dbb862dce0fe89efa8141c21a5b04108a29914bd51636019522323ca5097ec596a90b3028ed64e88ee009b0ac7de7c1ab6499ccb + languageName: node + linkType: hard + +"@stablelib/hash@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hash@npm:1.0.1" + checksum: 3ff1f12d1a4082aaf4b6cdf40c2010aabe5c4209d3b40b97b5bbb0d9abc0ee94abdc545e57de0614afaea807ca0212ac870e247ec8f66cdce91ec39ce82948cf + languageName: node + linkType: hard + +"@stablelib/hkdf@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/hkdf@npm:1.0.1" + dependencies: + "@stablelib/hash": ^1.0.1 + "@stablelib/hmac": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 9d45e303715a1835c8612b78e6c1b9d2b7463699b484241d8681fb5c17e0f2bbde5ce211c882134b64616a402e09177baeba80426995ff227b3654a155ab225d + languageName: node + linkType: hard + +"@stablelib/hmac@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/hmac@npm:1.0.1" + dependencies: + "@stablelib/constant-time": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: e3b93f7144a5846a6e30213278f7570de6d3f9d09131b95ce76d5c5c8bf37bf5d1830f2ee8d847555707271dbfd6e2461221719fd4d8b27ff06b9dd689c0ec21 + languageName: node + linkType: hard + +"@stablelib/int@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/int@npm:1.0.1" + checksum: 65bfbf50a382eea70c68e05366bf379cfceff8fbc076f1c267ef2f2411d7aed64fd140c415cb6c29f19a3910d3b8b7805d4b32ad5721a5007a8e744a808c7ae3 + languageName: node + linkType: hard + +"@stablelib/keyagreement@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/keyagreement@npm:1.0.1" + dependencies: + "@stablelib/bytes": ^1.0.1 + checksum: 3c8ec904dd50f72f3162f5447a0fa8f1d9ca6e24cd272d3dbe84971267f3b47f9bd5dc4e4eeedf3fbac2fe01f2d9277053e57c8e60db8c5544bfb35c62d290dd + languageName: node + linkType: hard + +"@stablelib/poly1305@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/poly1305@npm:1.0.1" + dependencies: + "@stablelib/constant-time": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 70b845bb0481c66b7ba3f3865d01e4c67a4dffc9616fc6de1d23efc5e828ec09de25f8e3be4e1f15a23b8e87e3036ee3d949c2fd4785047e6f7028bbec0ead18 + languageName: node + linkType: hard + +"@stablelib/random@npm:1.0.2, @stablelib/random@npm:^1.0.1, @stablelib/random@npm:^1.0.2": + version: 1.0.2 + resolution: "@stablelib/random@npm:1.0.2" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: f5ace0a588dc4c21f01cb85837892d4c872e994ae77a58a8eb7dd61aa0b26fb1e9b46b0445e71af57d963ef7d9f5965c64258fc0d04df7b2947bc48f2d3560c5 + languageName: node + linkType: hard + +"@stablelib/sha256@npm:1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha256@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: 38669871e1bda72eb537629ebceac1c72da8890273a9fbe088f81f6d14c1ec04e78be8c5b455380a06c67f8e62b2508e11e9063fcc257dbaa1b5c27ac756ba77 + languageName: node + linkType: hard + +"@stablelib/sha512@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/sha512@npm:1.0.1" + dependencies: + "@stablelib/binary": ^1.0.1 + "@stablelib/hash": ^1.0.1 + "@stablelib/wipe": ^1.0.1 + checksum: b7c82f7608a35948a2147a534c0c9afc80deab3fd5f72a2e27b2454e7c0c6944d39381be3abcb1b7fac5b824ba030ae3e98209d517a579c143d8ed63930b042f + languageName: node + linkType: hard + +"@stablelib/wipe@npm:^1.0.1": + version: 1.0.1 + resolution: "@stablelib/wipe@npm:1.0.1" + checksum: 287802eb146810a46ba72af70b82022caf83a8aeebde23605f5ee0decf64fe2b97a60c856e43b6617b5801287c30cfa863cfb0469e7fcde6f02d143cf0c6cbf4 + languageName: node + linkType: hard + +"@stablelib/x25519@npm:1.0.3": + version: 1.0.3 + resolution: "@stablelib/x25519@npm:1.0.3" + dependencies: + "@stablelib/keyagreement": ^1.0.1 + "@stablelib/random": ^1.0.2 + "@stablelib/wipe": ^1.0.1 + checksum: f8537066b542b6770c1b5b2ae5ad0688d1b986e4bf818067c152c123a5471531987bbf024224f75f387f481ccc5b628e391e49e92102b8b1a3e2d449d6105402 + languageName: node + linkType: hard + "@substrate/connect-extension-protocol@npm:^2.0.0": version: 2.0.0 resolution: "@substrate/connect-extension-protocol@npm:2.0.0" @@ -1693,16 +2306,6 @@ __metadata: languageName: node linkType: hard -"@types/chrome@npm:^0.0.136": - version: 0.0.136 - resolution: "@types/chrome@npm:0.0.136" - dependencies: - "@types/filesystem": "*" - "@types/har-format": "*" - checksum: af96fdc79fb019d827fdb6269f831921f8f36215ee05a2624436dd2ad4d84d7be12333cc6f54912fb8bae0ca49cbfde5a78de94723bfbd20d309d2e71e274a1b - languageName: node - linkType: hard - "@types/concurrently@npm:6.4.0": version: 6.4.0 resolution: "@types/concurrently@npm:6.4.0" @@ -1837,22 +2440,6 @@ __metadata: languageName: node linkType: hard -"@types/filesystem@npm:*": - version: 0.0.36 - resolution: "@types/filesystem@npm:0.0.36" - dependencies: - "@types/filewriter": "*" - checksum: fad9f6b291598e65a0c5e73e685977b2c86c9bdb1ede5ce29eb35f196bbdf8d668a32bd4361624391ae1eb699362daa13442b75177dd73c6b300967fdd1ed765 - languageName: node - linkType: hard - -"@types/filewriter@npm:*": - version: 0.0.33 - resolution: "@types/filewriter@npm:0.0.33" - checksum: 56ba7f0d3c2dafbb899e7f5a9574df41d2f07494040aa09f9fd51c7004c0b255c36c554333c380b23625afb50e50cf1d13f5925d956a627d4ee6e3fbe8f3176b - languageName: node - linkType: hard - "@types/glob@npm:*": version: 8.1.0 resolution: "@types/glob@npm:8.1.0" @@ -1863,13 +2450,6 @@ __metadata: languageName: node linkType: hard -"@types/har-format@npm:*": - version: 1.2.15 - resolution: "@types/har-format@npm:1.2.15" - checksum: e3e8197e0ac74747736d13e0b54ec862e55ecf57cc962e1a24c801c7940b7b829d281dddc67f297877f1c4bc014b4ac29d35b2c6a9a1e6bc26bcff5fd7f835b0 - languageName: node - linkType: hard - "@types/http-errors@npm:*": version: 2.0.4 resolution: "@types/http-errors@npm:2.0.4" @@ -2186,6 +2766,13 @@ __metadata: languageName: node linkType: hard +"@types/trusted-types@npm:^2.0.2": + version: 2.0.7 + resolution: "@types/trusted-types@npm:2.0.7" + checksum: 8e4202766a65877efcf5d5a41b7dd458480b36195e580a3b1085ad21e948bc417d55d6f8af1fd2a7ad008015d4117d5fdfe432731157da3c68678487174e4ba3 + languageName: node + linkType: hard + "@types/winston@npm:2.4.4": version: 2.4.4 resolution: "@types/winston@npm:2.4.4" @@ -2368,6 +2955,365 @@ __metadata: languageName: node linkType: hard +"@wagmi/connectors@npm:5.1.8": + version: 5.1.8 + resolution: "@wagmi/connectors@npm:5.1.8" + dependencies: + "@coinbase/wallet-sdk": 4.0.4 + "@metamask/sdk": 0.27.0 + "@safe-global/safe-apps-provider": 0.18.3 + "@safe-global/safe-apps-sdk": 9.1.0 + "@walletconnect/ethereum-provider": 2.15.2 + "@walletconnect/modal": 2.6.2 + cbw-sdk: "npm:@coinbase/wallet-sdk@3.9.3" + peerDependencies: + "@wagmi/core": 2.13.4 + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: c42784f74818073a897318d41a42e2d0fd57892436650e569ea48512daf7be99ec186086164cb965d5400d0d1919653cec12d0e479914b1d984da86e99f1e049 + languageName: node + linkType: hard + +"@wagmi/core@npm:2.13.4": + version: 2.13.4 + resolution: "@wagmi/core@npm:2.13.4" + dependencies: + eventemitter3: 5.0.1 + mipd: 0.0.7 + zustand: 4.4.1 + peerDependencies: + "@tanstack/query-core": ">=5.0.0" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + "@tanstack/query-core": + optional: true + typescript: + optional: true + checksum: aa53de9dba8fa6d6b846a6584cb05fc03f2fb7ae023f8666ab030d5583966fc4b5aa81ca29b5ff8b6c04d26f1e6508126b62afad0ca2fa7fc5136e3a04e5cb33 + languageName: node + linkType: hard + +"@walletconnect/core@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/core@npm:2.15.2" + dependencies: + "@walletconnect/heartbeat": 1.2.2 + "@walletconnect/jsonrpc-provider": 1.0.14 + "@walletconnect/jsonrpc-types": 1.0.4 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/jsonrpc-ws-connection": 1.0.14 + "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/logger": 2.1.2 + "@walletconnect/relay-api": 1.0.11 + "@walletconnect/relay-auth": 1.0.4 + "@walletconnect/safe-json": 1.0.2 + "@walletconnect/time": 1.0.2 + "@walletconnect/types": 2.15.2 + "@walletconnect/utils": 2.15.2 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.0 + checksum: 93a055dd8feed4436370d31a6245764c77885415282f18c77c4b6dcb3abedde72048798625d64556996c0eb99d6f08c91be026bfa6ca7ea28c65bd1f0ac65113 + languageName: node + linkType: hard + +"@walletconnect/environment@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/environment@npm:1.0.1" + dependencies: + tslib: 1.14.1 + checksum: a18731d857bdca73910147e59992cef3c6e292c37ab3d3013307bd706f06cb216aa804f0f48b25a78df6493ad8127e633629f4b50acb4f69d3765d6ac0524f68 + languageName: node + linkType: hard + +"@walletconnect/ethereum-provider@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/ethereum-provider@npm:2.15.2" + dependencies: + "@walletconnect/jsonrpc-http-connection": 1.0.8 + "@walletconnect/jsonrpc-provider": 1.0.14 + "@walletconnect/jsonrpc-types": 1.0.4 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/modal": 2.6.2 + "@walletconnect/sign-client": 2.15.2 + "@walletconnect/types": 2.15.2 + "@walletconnect/universal-provider": 2.15.2 + "@walletconnect/utils": 2.15.2 + events: 3.3.0 + checksum: 4a767a1e1148b69743344332898d7d448a47bd0e909168ef532eeb27ee3a5896fcdd2bc0b3c50fa8f6f33cfb8e6da5ad54d21ee1cf630ced9a8c69437a7cca18 + languageName: node + linkType: hard + +"@walletconnect/events@npm:1.0.1, @walletconnect/events@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/events@npm:1.0.1" + dependencies: + keyvaluestorage-interface: ^1.0.0 + tslib: 1.14.1 + checksum: d28aa4dcc981bdaf38f0aeed979731ca793cead7e7a4ee730a9146d99d89db09a86c8e3192ed860638283276961c0723ba00cf3b8776f0692b36ec7df6c01be4 + languageName: node + linkType: hard + +"@walletconnect/heartbeat@npm:1.2.2": + version: 1.2.2 + resolution: "@walletconnect/heartbeat@npm:1.2.2" + dependencies: + "@walletconnect/events": ^1.0.1 + "@walletconnect/time": ^1.0.2 + events: ^3.3.0 + checksum: 720341f24dae64acc836015d694b4337a0d1cbc628a3f6ee556771278465cae61366fb0e5af93f9823b06a6f4e23013f3986d6dad2a58c2db4b7c991a73c646d + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-http-connection@npm:1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-http-connection@npm:1.0.8" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.6 + "@walletconnect/safe-json": ^1.0.1 + cross-fetch: ^3.1.4 + events: ^3.3.0 + checksum: 2b7c49aca54af2ec37f7bb493062e0bb522ec262889890aa00c133a85dd39beffcfcdb73252600446383a9e6db360cffdc6c50ef7c9b68aae7f5606c8781bdbc + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-provider@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-provider@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.8 + "@walletconnect/safe-json": ^1.0.2 + events: ^3.3.0 + checksum: db8f931f93285520c51939603108f5cfe2a90a651d12744766d14471db3a488d2964ece5bfedc6cc93832ecd008cd37e7e1b1a950d9ef3385106ee052b936573 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-types@npm:1.0.4, @walletconnect/jsonrpc-types@npm:^1.0.2, @walletconnect/jsonrpc-types@npm:^1.0.3": + version: 1.0.4 + resolution: "@walletconnect/jsonrpc-types@npm:1.0.4" + dependencies: + events: ^3.3.0 + keyvaluestorage-interface: ^1.0.0 + checksum: 99ea5f9f3b0c5892ff874de87dee62cf4fc345124177db1e6e5eaf48b85e2ea3833f0157beca43c51047444938e8eda6362fa8069b33e11d39e1050e7ef6e821 + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-utils@npm:1.0.8, @walletconnect/jsonrpc-utils@npm:^1.0.6, @walletconnect/jsonrpc-utils@npm:^1.0.8": + version: 1.0.8 + resolution: "@walletconnect/jsonrpc-utils@npm:1.0.8" + dependencies: + "@walletconnect/environment": ^1.0.1 + "@walletconnect/jsonrpc-types": ^1.0.3 + tslib: 1.14.1 + checksum: f43a85dfce8150c3e3d1f009e8d8241ab8e10b026ea435f0918edf4db6b3a17586ba9d9c54a93cc61e4d3c685611e5bd5954fc377a581af503acd38e6d84c2ef + languageName: node + linkType: hard + +"@walletconnect/jsonrpc-ws-connection@npm:1.0.14": + version: 1.0.14 + resolution: "@walletconnect/jsonrpc-ws-connection@npm:1.0.14" + dependencies: + "@walletconnect/jsonrpc-utils": ^1.0.6 + "@walletconnect/safe-json": ^1.0.2 + events: ^3.3.0 + ws: ^7.5.1 + checksum: a401e60b19390098183ef1b2a7b3e15c4dd3c64f9ac87fd2bbc0ae1f7fb31539ba542374ca021193efc4a2ae59fa3b04e588aed98cdf5c364f50524403d50f9f + languageName: node + linkType: hard + +"@walletconnect/keyvaluestorage@npm:1.1.1": + version: 1.1.1 + resolution: "@walletconnect/keyvaluestorage@npm:1.1.1" + dependencies: + "@walletconnect/safe-json": ^1.0.1 + idb-keyval: ^6.2.1 + unstorage: ^1.9.0 + peerDependencies: + "@react-native-async-storage/async-storage": 1.x + peerDependenciesMeta: + "@react-native-async-storage/async-storage": + optional: true + checksum: 7f85cb83963153417745367742070ccb78e03bd62adb549de57a7d5fae7bcfbd9a8f42b2f445ca76a3817ffacacc69d85bbf67757c3616ee7b3525f2f8a0faea + languageName: node + linkType: hard + +"@walletconnect/logger@npm:2.1.2": + version: 2.1.2 + resolution: "@walletconnect/logger@npm:2.1.2" + dependencies: + "@walletconnect/safe-json": ^1.0.2 + pino: 7.11.0 + checksum: a2bb88b76d95ec5a95279dcc919f1d044d17be8fdda98a01665a607561b445bb56f2245a280933fb19aa7d41d41b688d0ffdb434ac56c46163ad2eb5338f389a + languageName: node + linkType: hard + +"@walletconnect/modal-core@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-core@npm:2.6.2" + dependencies: + valtio: 1.11.2 + checksum: 94daceba50c323b06ecbeac2968d9f0972f327359c6118887c6526cd64006249b12f64322d71bc6c4a2b928436ecc89cf3d3af706511fcdc264c1f4b34a2dd5d + languageName: node + linkType: hard + +"@walletconnect/modal-ui@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal-ui@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": 2.6.2 + lit: 2.8.0 + motion: 10.16.2 + qrcode: 1.5.3 + checksum: cd1ec0205eb491e529670599d3dd26f6782d7c5a99d5594bf6949a8c760c1c5f4eb6ed72b8662450774fe4e2dd47678f2c05145c8f2494bd7153446ddf4bd7ed + languageName: node + linkType: hard + +"@walletconnect/modal@npm:2.6.2": + version: 2.6.2 + resolution: "@walletconnect/modal@npm:2.6.2" + dependencies: + "@walletconnect/modal-core": 2.6.2 + "@walletconnect/modal-ui": 2.6.2 + checksum: 68b354d49960b96d22de0e47a3801df27c01a3e96ec5fbde3ca6df1344ca2b20668b0c4d58fe1803f5670ac7b7b4c6f5b7b405e354f5f9eaff5cca147c13de9c + languageName: node + linkType: hard + +"@walletconnect/relay-api@npm:1.0.11": + version: 1.0.11 + resolution: "@walletconnect/relay-api@npm:1.0.11" + dependencies: + "@walletconnect/jsonrpc-types": ^1.0.2 + checksum: 9fcddf055de01c04b9fa59035e8c6e31d523743c848d266f528009048aeadaa1b4d9b544bdcb6928e7a69f738d5f0352d1cdebbaa34b1346b937942cb5f6f144 + languageName: node + linkType: hard + +"@walletconnect/relay-auth@npm:1.0.4": + version: 1.0.4 + resolution: "@walletconnect/relay-auth@npm:1.0.4" + dependencies: + "@stablelib/ed25519": ^1.0.2 + "@stablelib/random": ^1.0.1 + "@walletconnect/safe-json": ^1.0.1 + "@walletconnect/time": ^1.0.2 + tslib: 1.14.1 + uint8arrays: ^3.0.0 + checksum: 35b3229d7b57e74fdb8fe6827d8dd8291dc60bacda880a57b2acb47a34d38f12be46c971c9eff361eb4073e896648b550de7a7a3852ef3752f9619c08dfba891 + languageName: node + linkType: hard + +"@walletconnect/safe-json@npm:1.0.2, @walletconnect/safe-json@npm:^1.0.1, @walletconnect/safe-json@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/safe-json@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: fee03fcc70adb5635ab9419ea6ec6555aa2467bef650ad3b9526451c3a5cf247836db0f3ae3bb435d2e585d99e50c2ebe7dc9c429cfa3df900cf3fe4bd06d37f + languageName: node + linkType: hard + +"@walletconnect/sign-client@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/sign-client@npm:2.15.2" + dependencies: + "@walletconnect/core": 2.15.2 + "@walletconnect/events": 1.0.1 + "@walletconnect/heartbeat": 1.2.2 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/logger": 2.1.2 + "@walletconnect/time": 1.0.2 + "@walletconnect/types": 2.15.2 + "@walletconnect/utils": 2.15.2 + events: 3.3.0 + checksum: 4e79d0ab5d4f889491ffb3fd60202ccecc41db7f09b3acfa99e6844ae194c6f9034acd87ee2a15728d9104636d38da70c6dd49cfe8b0ff76a9f8ae0eb480e1e8 + languageName: node + linkType: hard + +"@walletconnect/time@npm:1.0.2, @walletconnect/time@npm:^1.0.2": + version: 1.0.2 + resolution: "@walletconnect/time@npm:1.0.2" + dependencies: + tslib: 1.14.1 + checksum: e3fc0113ca9e7ecedfc65f9e1517196682d5ffcda60750f51073b8d704719a17fea75da8b242c804bfa5b994707723043892a2db3cc86988b190b7b8711fe3c0 + languageName: node + linkType: hard + +"@walletconnect/types@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/types@npm:2.15.2" + dependencies: + "@walletconnect/events": 1.0.1 + "@walletconnect/heartbeat": 1.2.2 + "@walletconnect/jsonrpc-types": 1.0.4 + "@walletconnect/keyvaluestorage": 1.1.1 + "@walletconnect/logger": 2.1.2 + events: 3.3.0 + checksum: e9f6c3623422ee426e31a903fb824f89662fada0e60462bba8e6bd5cbaa79dd17396852be5ce46a611ccdb76953a314bcc7b0b60dc8fa727a71cd0ab84fc631c + languageName: node + linkType: hard + +"@walletconnect/universal-provider@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/universal-provider@npm:2.15.2" + dependencies: + "@walletconnect/jsonrpc-http-connection": 1.0.8 + "@walletconnect/jsonrpc-provider": 1.0.14 + "@walletconnect/jsonrpc-types": 1.0.4 + "@walletconnect/jsonrpc-utils": 1.0.8 + "@walletconnect/logger": 2.1.2 + "@walletconnect/sign-client": 2.15.2 + "@walletconnect/types": 2.15.2 + "@walletconnect/utils": 2.15.2 + events: 3.3.0 + checksum: f180fd044a88e36f25e7ce790cebb984459ba63d5c1cc39ba3fe38e52d3ee7443fa06fba7f10601e754b66bb6903159f544357394aba1298f2c109ea454530dd + languageName: node + linkType: hard + +"@walletconnect/utils@npm:2.15.2": + version: 2.15.2 + resolution: "@walletconnect/utils@npm:2.15.2" + dependencies: + "@stablelib/chacha20poly1305": 1.0.1 + "@stablelib/hkdf": 1.0.1 + "@stablelib/random": 1.0.2 + "@stablelib/sha256": 1.0.1 + "@stablelib/x25519": 1.0.3 + "@walletconnect/relay-api": 1.0.11 + "@walletconnect/relay-auth": 1.0.4 + "@walletconnect/safe-json": 1.0.2 + "@walletconnect/time": 1.0.2 + "@walletconnect/types": 2.15.2 + "@walletconnect/window-getters": 1.0.1 + "@walletconnect/window-metadata": 1.0.1 + detect-browser: 5.3.0 + elliptic: ^6.5.7 + query-string: 7.1.3 + uint8arrays: 3.1.0 + checksum: bca2c38b83595cdbe6cd665b14464a380d49df2be5c1a61d4e7d4789cbdb12dbc83361ba2af4115d45fa39477d1a416720e3b153537fbe463833033da16fc00e + languageName: node + linkType: hard + +"@walletconnect/window-getters@npm:1.0.1, @walletconnect/window-getters@npm:^1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-getters@npm:1.0.1" + dependencies: + tslib: 1.14.1 + checksum: fae312c4e1be5574d97f071de58e6aa0d0296869761499caf9d4a9a5fd2643458af32233a2120521b00873a599ff88457d405bd82ced5fb5bd6dc3191c07a3e5 + languageName: node + linkType: hard + +"@walletconnect/window-metadata@npm:1.0.1": + version: 1.0.1 + resolution: "@walletconnect/window-metadata@npm:1.0.1" + dependencies: + "@walletconnect/window-getters": ^1.0.1 + tslib: 1.14.1 + checksum: e82aea7195c6fe95c00e87bb38051c5549838c2e8302da94f1afa48206f79f0b620166c9820f847494505d282d1568e2086a1561b0493d2d0a1fa115f9106aef + languageName: node + linkType: hard + "abbrev@npm:^2.0.0": version: 2.0.0 resolution: "abbrev@npm:2.0.0" @@ -2531,7 +3477,7 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:~3.1.2": +"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" dependencies: @@ -2735,6 +3681,15 @@ __metadata: languageName: node linkType: hard +"async-mutex@npm:^0.2.6": + version: 0.2.6 + resolution: "async-mutex@npm:0.2.6" + dependencies: + tslib: ^2.0.0 + checksum: f50102e0c57f6a958528cff7dff13da070897f17107b42274417a7248905b927b6e51c3387f8aed1f5cd6005b0e692d64a83a0789be602e4e7e7da4afe08b889 + languageName: node + linkType: hard + "async-redis@npm:^2.0.0": version: 2.0.0 resolution: "async-redis@npm:2.0.0" @@ -2758,6 +3713,13 @@ __metadata: languageName: node linkType: hard +"atomic-sleep@npm:^1.0.0": + version: 1.0.0 + resolution: "atomic-sleep@npm:1.0.0" + checksum: b95275afb2f80732f22f43a60178430c468906a415a7ff18bcd0feeebc8eec3930b51250aeda91a476062a90e07132b43a1794e8d8ffcf9b650e8139be75fa36 + languageName: node + linkType: hard + "available-typed-arrays@npm:^1.0.7": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" @@ -2854,23 +3816,23 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.20.0": - version: 1.20.0 - resolution: "body-parser@npm:1.20.0" +"body-parser@npm:1.20.2": + version: 1.20.2 + resolution: "body-parser@npm:1.20.2" dependencies: bytes: 3.1.2 - content-type: ~1.0.4 + content-type: ~1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.10.3 - raw-body: 2.5.1 + qs: 6.11.0 + raw-body: 2.5.2 type-is: ~1.6.18 unpipe: 1.0.0 - checksum: 12fffdeac82fe20dddcab7074215d5156e7d02a69ae90cbe9fee1ca3efa2f28ef52097cbea76685ee0a1509c71d85abd0056a08e612c09077cad6277a644cf88 + checksum: 14d37ec638ab5c93f6099ecaed7f28f890d222c650c69306872e00b9efa081ff6c596cd9afb9930656aae4d6c4e1c17537bea12bb73c87a217cb3cfea8896737 languageName: node linkType: hard @@ -2947,6 +3909,16 @@ __metadata: languageName: node linkType: hard +"buffer@npm:^6.0.3": + version: 6.0.3 + resolution: "buffer@npm:6.0.3" + dependencies: + base64-js: ^1.3.1 + ieee754: ^1.2.1 + checksum: 5ad23293d9a731e4318e420025800b42bf0d264004c0286c8cc010af7a270c7a0f6522e84f54b9ad65cbd6db20b8badbfd8d2ebf4f80fa03dab093b89e68c3f9 + languageName: node + linkType: hard + "bufferutil@npm:^4.0.8": version: 4.0.8 resolution: "bufferutil@npm:4.0.8" @@ -3047,6 +4019,13 @@ __metadata: languageName: node linkType: hard +"camelcase@npm:^5.0.0": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b + languageName: node + linkType: hard + "catharsis@npm:^0.9.0": version: 0.9.0 resolution: "catharsis@npm:0.9.0" @@ -3056,6 +4035,23 @@ __metadata: languageName: node linkType: hard +"cbw-sdk@npm:@coinbase/wallet-sdk@3.9.3": + version: 3.9.3 + resolution: "@coinbase/wallet-sdk@npm:3.9.3" + dependencies: + bn.js: ^5.2.1 + buffer: ^6.0.3 + clsx: ^1.2.1 + eth-block-tracker: ^7.1.0 + eth-json-rpc-filters: ^6.0.0 + eventemitter3: ^5.0.1 + keccak: ^3.0.3 + preact: ^10.16.0 + sha.js: ^2.4.11 + checksum: c3ab1b30facbe43f6d0f7f4010e438f9c488b72f9dad768b60adbb0e4f6b057e7518e3d86c7859fdd15df187ef3f1d6212898eae4694a7d8ed0ceb05ef216eb9 + languageName: node + linkType: hard + "chai-http@npm:^4.4.0": version: 4.4.0 resolution: "chai-http@npm:4.4.0" @@ -3120,7 +4116,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.2": +"chokidar@npm:>=3.0.0 <4.0.0, chokidar@npm:^3.5.2, chokidar@npm:^3.6.0": version: 3.6.0 resolution: "chokidar@npm:3.6.0" dependencies: @@ -3153,6 +4149,15 @@ __metadata: languageName: node linkType: hard +"citty@npm:^0.1.5, citty@npm:^0.1.6": + version: 0.1.6 + resolution: "citty@npm:0.1.6" + dependencies: + consola: ^3.2.3 + checksum: 3fbcaaea92d328deddb5aba7d629d9076d4f1aa0338f59db7ea647a8f51eedc14b7f6218c87ad03c9e3c126213ba87d13d7774f9c30d64209f4b074aa83bd6ab + languageName: node + linkType: hard + "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -3179,6 +4184,28 @@ __metadata: languageName: node linkType: hard +"clipboardy@npm:^4.0.0": + version: 4.0.0 + resolution: "clipboardy@npm:4.0.0" + dependencies: + execa: ^8.0.1 + is-wsl: ^3.1.0 + is64bit: ^2.0.0 + checksum: ac7fa4438451d4a509fd7163505c08be92087c1a0ab8f54f8063eb04a69191ded1b59333344e2fd60bad9688e2a3dd69e50a813bf05ebf8369fa8bf65a0f47a2 + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^6.2.0 + checksum: 4fcfd26d292c9f00238117f39fc797608292ae36bac2168cfee4c85923817d0607fe21b3329a8621e01aedf512c99b7eaa60e363a671ffd378df6649fb48ae42 + languageName: node + linkType: hard + "cliui@npm:^7.0.2": version: 7.0.4 resolution: "cliui@npm:7.0.4" @@ -3201,7 +4228,14 @@ __metadata: languageName: node linkType: hard -"cluster-key-slot@npm:^1.1.0": +"clsx@npm:^1.2.1": + version: 1.2.1 + resolution: "clsx@npm:1.2.1" + checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12 + languageName: node + linkType: hard + +"cluster-key-slot@npm:1.1.2, cluster-key-slot@npm:^1.1.0": version: 1.1.2 resolution: "cluster-key-slot@npm:1.1.2" checksum: be0ad2d262502adc998597e83f9ded1b80f827f0452127c5a37b22dfca36bab8edf393f7b25bb626006fb9fb2436106939ede6d2d6ecf4229b96a47f27edd681 @@ -3346,6 +4380,13 @@ __metadata: languageName: node linkType: hard +"consola@npm:^3.2.3": + version: 3.2.3 + resolution: "consola@npm:3.2.3" + checksum: 32ec70e177dd2385c42e38078958cc7397be91db21af90c6f9faa0b16168b49b1c61d689338604bbb2d64370b9347a35f42a9197663a913d3a405bb0ce728499 + languageName: node + linkType: hard + "content-disposition@npm:0.5.4": version: 0.5.4 resolution: "content-disposition@npm:0.5.4" @@ -3355,7 +4396,7 @@ __metadata: languageName: node linkType: hard -"content-type@npm:~1.0.4": +"content-type@npm:~1.0.4, content-type@npm:~1.0.5": version: 1.0.5 resolution: "content-type@npm:1.0.5" checksum: 566271e0a251642254cde0f845f9dd4f9856e52d988f4eb0d0dcffbb7a1f8ec98de7a5215fc628f3bce30fe2fb6fd2bc064b562d721658c59b544e2d34ea2766 @@ -3369,6 +4410,13 @@ __metadata: languageName: node linkType: hard +"cookie-es@npm:^1.1.0": + version: 1.2.2 + resolution: "cookie-es@npm:1.2.2" + checksum: 099050c30c967c89aa72d1d7984e87b3395f3e709cf148d297f436828ebfcc39033f5374d2efdc46d9b5e3eee50b1d59635432c252e57329fea7f09afeb4d055 + languageName: node + linkType: hard + "cookie-signature@npm:1.0.6": version: 1.0.6 resolution: "cookie-signature@npm:1.0.6" @@ -3376,10 +4424,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 +"cookie@npm:0.6.0": + version: 0.6.0 + resolution: "cookie@npm:0.6.0" + checksum: f56a7d32a07db5458e79c726b77e3c2eff655c36792f2b6c58d351fb5f61531e5b1ab7f46987150136e366c65213cbe31729e02a3eaed630c3bf7334635fb410 languageName: node linkType: hard @@ -3451,7 +4499,7 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.5": +"cross-fetch@npm:^3.1.4, cross-fetch@npm:^3.1.5": version: 3.1.8 resolution: "cross-fetch@npm:3.1.8" dependencies: @@ -3480,6 +4528,18 @@ __metadata: languageName: node linkType: hard +"crossws@npm:^0.2.0, crossws@npm:^0.2.4": + version: 0.2.4 + resolution: "crossws@npm:0.2.4" + peerDependencies: + uWebSockets.js: "*" + peerDependenciesMeta: + uWebSockets.js: + optional: true + checksum: dcaf730a3af32cf081ab49fdb9c31192a738d7e0585585975e581e71a3d7d14df8d3b42ba183e13e34a1fc26645f695362abf30c40369d12652bcee372a484c3 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^4.0.0": version: 4.0.1 resolution: "data-uri-to-buffer@npm:4.0.1" @@ -3571,6 +4631,13 @@ __metadata: languageName: node linkType: hard +"decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: ad8c51a7e7e0720c70ec2eeb1163b66da03e7616d7b98c9ef43cce2416395e84c1e9548dd94f5f6ffecfee9f8b94251fc57121a8b021f2ff2469b2bae247b8aa + languageName: node + linkType: hard + "decimal.js-light@npm:^2.5.1": version: 2.5.1 resolution: "decimal.js-light@npm:2.5.1" @@ -3585,6 +4652,13 @@ __metadata: languageName: node linkType: hard +"decode-uri-component@npm:^0.2.2": + version: 0.2.2 + resolution: "decode-uri-component@npm:0.2.2" + checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 + languageName: node + linkType: hard + "deep-eql@npm:^4.1.3": version: 4.1.4 resolution: "deep-eql@npm:4.1.4" @@ -3637,6 +4711,13 @@ __metadata: languageName: node linkType: hard +"defu@npm:^6.1.4": + version: 6.1.4 + resolution: "defu@npm:6.1.4" + checksum: 40e3af6338f195ac1564f53d1887fa2d0429ac7e8c081204bc4d29191180059d3952b5f4e08fe5df8d59eb873aa26e9c88b56d4fac699673d4a372c93620b229 + languageName: node + linkType: hard + "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -3665,6 +4746,13 @@ __metadata: languageName: node linkType: hard +"destr@npm:^2.0.3": + version: 2.0.3 + resolution: "destr@npm:2.0.3" + checksum: 4521b145ba6118919a561f7d979d623793695a516d1b9df704de81932601bf9cf21c47278e1cb93a309c88a14f4fd1f18680bb49ebef8b2546cc7f415e7ae48e + languageName: node + linkType: hard + "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -3672,13 +4760,22 @@ __metadata: languageName: node linkType: hard -"detect-browser@npm:^5.2.0": +"detect-browser@npm:5.3.0, detect-browser@npm:^5.2.0": version: 5.3.0 resolution: "detect-browser@npm:5.3.0" checksum: dd6e08d55da1d9e0f22510ac79872078ae03d9dfa13c5e66c96baedc1c86567345a88f96949161f6be8f3e0fafa93bf179bdb1cd311b14f5f163112fcc70ab49 languageName: node linkType: hard +"detect-libc@npm:^1.0.3": + version: 1.0.3 + resolution: "detect-libc@npm:1.0.3" + bin: + detect-libc: ./bin/detect-libc.js + checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e + languageName: node + linkType: hard + "dezalgo@npm:^1.0.4": version: 1.0.4 resolution: "dezalgo@npm:1.0.4" @@ -3703,6 +4800,13 @@ __metadata: languageName: node linkType: hard +"dijkstrajs@npm:^1.0.1": + version: 1.0.3 + resolution: "dijkstrajs@npm:1.0.3" + checksum: 82ff2c6633f235dd5e6bed04ec62cdfb1f327b4d7534557bd52f18991313f864ee50654543072fff4384a92b643ada4d5452f006b7098dbdfad6c8744a8c9e08 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -3778,7 +4882,7 @@ __metadata: languageName: node linkType: hard -"duplexify@npm:^4.0.0, duplexify@npm:^4.1.1": +"duplexify@npm:^4.0.0, duplexify@npm:^4.1.1, duplexify@npm:^4.1.2": version: 4.1.3 resolution: "duplexify@npm:4.1.3" dependencies: @@ -3839,6 +4943,21 @@ __metadata: languageName: node linkType: hard +"elliptic@npm:^6.5.7": + version: 6.5.7 + resolution: "elliptic@npm:6.5.7" + dependencies: + bn.js: ^4.11.9 + brorand: ^1.1.0 + hash.js: ^1.0.0 + hmac-drbg: ^1.0.1 + inherits: ^2.0.4 + minimalistic-assert: ^1.0.1 + minimalistic-crypto-utils: ^1.0.1 + checksum: af0ffddffdbc2fea4eeec74388cd73e62ed5a0eac6711568fb28071566319785df529c968b0bf1250ba4bc628e074b2d64c54a633e034aa6f0c6b152ceb49ab8 + languageName: node + linkType: hard + "emoji-regex@npm:^8.0.0": version: 8.0.0 resolution: "emoji-regex@npm:8.0.0" @@ -3860,6 +4979,13 @@ __metadata: languageName: node linkType: hard +"encode-utf8@npm:^1.0.3": + version: 1.0.3 + resolution: "encode-utf8@npm:1.0.3" + checksum: 550224bf2a104b1d355458c8a82e9b4ea07f9fc78387bc3a49c151b940ad26473de8dc9e121eefc4e84561cb0b46de1e4cd2bc766f72ee145e9ea9541482817f + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -3876,7 +5002,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.0, end-of-stream@npm:^1.4.1, end-of-stream@npm:^1.4.4": +"end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.0, end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -4446,10 +5572,46 @@ __metadata: languageName: node linkType: hard -"etag@npm:~1.8.1": - version: 1.8.1 - resolution: "etag@npm:1.8.1" - checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff +"etag@npm:~1.8.1": + version: 1.8.1 + resolution: "etag@npm:1.8.1" + checksum: 571aeb3dbe0f2bbd4e4fadbdb44f325fc75335cd5f6f6b6a091e6a06a9f25ed5392f0863c5442acb0646787446e816f13cbfc6edce5b07658541dff573cab1ff + languageName: node + linkType: hard + +"eth-block-tracker@npm:^7.1.0": + version: 7.1.0 + resolution: "eth-block-tracker@npm:7.1.0" + dependencies: + "@metamask/eth-json-rpc-provider": ^1.0.0 + "@metamask/safe-event-emitter": ^3.0.0 + "@metamask/utils": ^5.0.1 + json-rpc-random-id: ^1.0.1 + pify: ^3.0.0 + checksum: 1d019f261e0ef07387cd74538b160700caa35ba9859ab9d4e5137c48bf9c92822c3b4ade40f8a504f16cb813de4c317c5378d047625ddf04592e256be8842588 + languageName: node + linkType: hard + +"eth-json-rpc-filters@npm:^6.0.0": + version: 6.0.1 + resolution: "eth-json-rpc-filters@npm:6.0.1" + dependencies: + "@metamask/safe-event-emitter": ^3.0.0 + async-mutex: ^0.2.6 + eth-query: ^2.1.2 + json-rpc-engine: ^6.1.0 + pify: ^5.0.0 + checksum: 216f7417417599a48273b08fb2894581175276fe21cb1c9ffa66e98a9c2a67bc0ac821ad2ca163fdb8e8de0960aea0d9c5e53aee9d5dcfec355abf020e9458c5 + languageName: node + linkType: hard + +"eth-query@npm:^2.1.2": + version: 2.1.2 + resolution: "eth-query@npm:2.1.2" + dependencies: + json-rpc-random-id: ^1.0.0 + xtend: ^4.0.1 + checksum: 83daa0e28452c54722aec78cd24d036bad5b6e7c08035d98e10d4bea11f71662f12cab63ebd8a848d4df46ad316503d54ecccb41c9244d2ea8b29364b0a20201 languageName: node linkType: hard @@ -4488,7 +5650,7 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^5.0.1": +"eventemitter3@npm:5.0.1, eventemitter3@npm:^5.0.1": version: 5.0.1 resolution: "eventemitter3@npm:5.0.1" checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f8 @@ -4504,6 +5666,13 @@ __metadata: languageName: node linkType: hard +"events@npm:3.3.0, events@npm:^3.3.0": + version: 3.3.0 + resolution: "events@npm:3.3.0" + checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 + languageName: node + linkType: hard + "execa@npm:7.2.0": version: 7.2.0 resolution: "execa@npm:7.2.0" @@ -4538,6 +5707,23 @@ __metadata: languageName: node linkType: hard +"execa@npm:^8.0.1": + version: 8.0.1 + resolution: "execa@npm:8.0.1" + dependencies: + cross-spawn: ^7.0.3 + get-stream: ^8.0.1 + human-signals: ^5.0.0 + is-stream: ^3.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^5.1.0 + onetime: ^6.0.0 + signal-exit: ^4.1.0 + strip-final-newline: ^3.0.0 + checksum: cac1bf86589d1d9b73bdc5dda65c52012d1a9619c44c526891956745f7b366ca2603d29fe3f7460bacc2b48c6eab5d6a4f7afe0534b31473d3708d1265545e1f + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": version: 3.1.1 resolution: "exponential-backoff@npm:3.1.1" @@ -4555,16 +5741,16 @@ __metadata: languageName: node linkType: hard -"express@npm:4.18.1": - version: 4.18.1 - resolution: "express@npm:4.18.1" +"express@npm:^4.19.2": + version: 4.19.2 + resolution: "express@npm:4.19.2" dependencies: accepts: ~1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.0 + body-parser: 1.20.2 content-disposition: 0.5.4 content-type: ~1.0.4 - cookie: 0.5.0 + cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 @@ -4580,7 +5766,7 @@ __metadata: parseurl: ~1.3.3 path-to-regexp: 0.1.7 proxy-addr: ~2.0.7 - qs: 6.10.3 + qs: 6.11.0 range-parser: ~1.2.1 safe-buffer: 5.2.1 send: 0.18.0 @@ -4590,7 +5776,7 @@ __metadata: type-is: ~1.6.18 utils-merge: 1.0.1 vary: ~1.1.2 - checksum: c3d44c92e48226ef32ec978becfedb0ecf0ca21316bfd33674b3c5d20459840584f2325726a4f17f33d9c99f769636f728982d1c5433a5b6fe6eb95b8cf0c854 + checksum: 212dbd6c2c222a96a61bc927639c95970a53b06257080bb9e2838adb3bffdb966856551fdad1ab5dd654a217c35db94f987d0aa88d48fb04d306340f5f34dca5 languageName: node linkType: hard @@ -4601,19 +5787,13 @@ __metadata: languageName: node linkType: hard -"extension-port-stream@npm:^2.0.1": - version: 2.1.1 - resolution: "extension-port-stream@npm:2.1.1" +"extension-port-stream@npm:^3.0.0": + version: 3.0.0 + resolution: "extension-port-stream@npm:3.0.0" dependencies: + readable-stream: ^3.6.2 || ^4.4.2 webextension-polyfill: ">=0.10.0 <1.0" - checksum: aee8bbeb2ed6f69a62f58a89580e0e9002dadb11062edbaedb7bb04cfc5a5e0b0d3980bfeaa1c3ee7e08dec7e5fac26e25497fc2f82000db7653442bd5eca157 - languageName: node - linkType: hard - -"fast-deep-equal@npm:^2.0.1": - version: 2.0.1 - resolution: "fast-deep-equal@npm:2.0.1" - checksum: b701835a87985e0ec4925bdf1f0c1e7eb56309b5d12d534d5b4b69d95a54d65bb16861c081781ead55f73f12d6c60ba668713391ee7fbf6b0567026f579b7b0b + checksum: 4f51d2258a96154c2d916a8a5425636a2b0817763e9277f7dc378d08b6f050c90d185dbde4313d27cf66ad99d4b3116479f9f699c40358c64cccfa524d2b55bf languageName: node linkType: hard @@ -4658,6 +5838,13 @@ __metadata: languageName: node linkType: hard +"fast-redact@npm:^3.0.0": + version: 3.5.0 + resolution: "fast-redact@npm:3.5.0" + checksum: ef03f0d1849da074a520a531ad299bf346417b790a643931ab4e01cb72275c8d55b60dc8512fb1f1818647b696790edefaa96704228db9f012da935faa1940af + languageName: node + linkType: hard + "fast-safe-stringify@npm:^2.0.6, fast-safe-stringify@npm:^2.1.1": version: 2.1.1 resolution: "fast-safe-stringify@npm:2.1.1" @@ -4716,6 +5903,13 @@ __metadata: languageName: node linkType: hard +"filter-obj@npm:^1.1.0": + version: 1.1.0 + resolution: "filter-obj@npm:1.1.0" + checksum: cf2104a7c45ff48e7f505b78a3991c8f7f30f28bd8106ef582721f321f1c6277f7751aacd5d83026cb079d9d5091082f588d14a72e7c5d720ece79118fa61e10 + languageName: node + linkType: hard + "finalhandler@npm:1.2.0": version: 1.2.0 resolution: "finalhandler@npm:1.2.0" @@ -4956,36 +6150,37 @@ __metadata: languageName: node linkType: hard -"gasp-sdk@npm:0.0.2-eth-rollup-develop.14": - version: 0.0.2-eth-rollup-develop.14 - resolution: "gasp-sdk@npm:0.0.2-eth-rollup-develop.14" +"gasp-sdk@npm:0.0.2-eth-rollup-develop.29": + version: 0.0.2-eth-rollup-develop.29 + resolution: "gasp-sdk@npm:0.0.2-eth-rollup-develop.29" dependencies: - "@metamask/sdk": 0.16.0 big.js: 6.2.1 - gasp-type-definitions: 0.0.2-eth-rollup-develop.15 + gasp-type-definitions: 0.0.2-eth-rollup-develop.30 tslib: ^2.3.0 tslog: 4.8.2 + viem: ^2.17.4 + wagmi: ^2.10.10 peerDependencies: "@polkadot/api": ^11.1.1 - checksum: 26226241341b03a2fcaca8d50ace7c8d875f2f33962ae581c81eb712a5ed47396c8e184f7f25f7ca950942402b683b52f9a56ac5901d1fb76fd0b0b58e6b4f54 + checksum: b710d808e255d5dda1c8c281a909d275581ca1a3190fb31eb5d190f70990e0c5474d6a354519451ff038e239c026aed83ee9303d2a2a8e94de6977c8ba486934 languageName: node linkType: hard -"gasp-type-definitions@npm:0.0.2-eth-rollup-develop.15": - version: 0.0.2-eth-rollup-develop.15 - resolution: "gasp-type-definitions@npm:0.0.2-eth-rollup-develop.15" +"gasp-type-definitions@npm:0.0.2-eth-rollup-develop.30": + version: 0.0.2-eth-rollup-develop.30 + resolution: "gasp-type-definitions@npm:0.0.2-eth-rollup-develop.30" peerDependencies: "@polkadot/types": ^11.1.1 - checksum: 66a883d4d81699930affe3bbc66352facfc2cb69c7aace4377abc0a9ebe751a795f86b2f95720b9a06fdad3ee63c563423725395d0ea8b288ac78a017fd5b534 + checksum: 9e88642a9b87c6ee787c40260940ec96ac1cdf67fd9ca8c4f666aa02f2fb55a8d2c40f2fed02567961599e0cabe4987fbf8bec2ab4aa103fedbd050eb540f850 languageName: node linkType: hard -"gasp-types@npm:0.0.2-eth-rollup-develop.14": - version: 0.0.2-eth-rollup-develop.14 - resolution: "gasp-types@npm:0.0.2-eth-rollup-develop.14" +"gasp-types@npm:0.0.2-eth-rollup-develop.29": + version: 0.0.2-eth-rollup-develop.29 + resolution: "gasp-types@npm:0.0.2-eth-rollup-develop.29" peerDependencies: "@polkadot/api": ^11.1.1 - checksum: 67126f0c5b19b4834ebb0ef0e8338cac750981f78a363e1f465d4e312bd8cef8bd6e89ef6d2286b17988083797d3e419d01db68a201845fcd39c2abd142e50b5 + checksum: 73b6d6d824523cd276c1a3b677beade26f1890d8ee875162d2fdae145f23be970050141c27beba41201bbf2c046d80fc2ab6041ed88850f19686fd3e0169a590 languageName: node linkType: hard @@ -5034,7 +6229,14 @@ __metadata: languageName: node linkType: hard -"get-caller-file@npm:^2.0.5": +"generic-pool@npm:3.9.0": + version: 3.9.0 + resolution: "generic-pool@npm:3.9.0" + checksum: 3d89e9b2018d2e3bbf44fec78c76b2b7d56d6a484237aa9daf6ff6eedb14b0899dadd703b5d810219baab2eb28e5128fb18b29e91e602deb2eccac14492d8ca8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: b9769a836d2a98c3ee734a88ba712e62703f1df31b94b784762c433c27a386dd6029ff55c2a920c392e33657d80191edbf18c61487e198844844516f843496b9 @@ -5061,6 +6263,13 @@ __metadata: languageName: node linkType: hard +"get-port-please@npm:^3.1.2": + version: 3.1.2 + resolution: "get-port-please@npm:3.1.2" + checksum: 8e65b56459ead2f31c446d76bb8eb639c33e04e72b07a4dd5d8acc39738f12962591e90b2befecf10492844d0d11c2122c281f5204ee48692d4a8ba0ec68733a + languageName: node + linkType: hard + "get-port@npm:^5.1.1": version: 5.1.1 resolution: "get-port@npm:5.1.1" @@ -5084,6 +6293,13 @@ __metadata: languageName: node linkType: hard +"get-stream@npm:^8.0.1": + version: 8.0.1 + resolution: "get-stream@npm:8.0.1" + checksum: 01e3d3cf29e1393f05f44d2f00445c5f9ec3d1c49e8179b31795484b9c117f4c695e5e07b88b50785d5c8248a788c85d9913a79266fc77e3ef11f78f10f1b974 + languageName: node + linkType: hard + "get-symbol-description@npm:^1.0.2": version: 1.0.2 resolution: "get-symbol-description@npm:1.0.2" @@ -5286,6 +6502,24 @@ __metadata: languageName: node linkType: hard +"h3@npm:^1.10.2, h3@npm:^1.12.0": + version: 1.12.0 + resolution: "h3@npm:1.12.0" + dependencies: + cookie-es: ^1.1.0 + crossws: ^0.2.4 + defu: ^6.1.4 + destr: ^2.0.3 + iron-webcrypto: ^1.1.1 + ohash: ^1.1.3 + radix3: ^1.1.2 + ufo: ^1.5.3 + uncrypto: ^0.1.3 + unenv: ^1.9.0 + checksum: 958d7364dc38460a02fb2032bbca887e741bfc173517eb49787a0cdf80ea194fe16964ab175f3d6e9c299600c67e3cfe51176d984dfd407b900fc0e20ef9bbb9 + languageName: node + linkType: hard + "has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" @@ -5365,6 +6599,13 @@ __metadata: languageName: node linkType: hard +"hey-listen@npm:^1.0.8": + version: 1.0.8 + resolution: "hey-listen@npm:1.0.8" + checksum: 6bad60b367688f5348e25e7ca3276a74b59ac5a09b0455e6ff8ab7d4a9e38cd2116c708a7dcd8a954d27253ce1d8717ec891d175723ea739885b828cf44e4072 + languageName: node + linkType: hard + "hmac-drbg@npm:^1.0.1": version: 1.0.1 resolution: "hmac-drbg@npm:1.0.1" @@ -5424,6 +6665,13 @@ __metadata: languageName: node linkType: hard +"http-shutdown@npm:^1.2.2": + version: 1.2.2 + resolution: "http-shutdown@npm:1.2.2" + checksum: 5dccd94f4fe4f51f9cbd7ec4586121160cd6470728e581662ea8032724440d891c4c92b8210b871ac468adadb3c99c40098ad0f752a781a550abae49dfa26206 + languageName: node + linkType: hard + "https-proxy-agent@npm:^5.0.0": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -5458,6 +6706,13 @@ __metadata: languageName: node linkType: hard +"human-signals@npm:^5.0.0": + version: 5.0.0 + resolution: "human-signals@npm:5.0.0" + checksum: 6504560d5ed91444f16bea3bd9dfc66110a339442084e56c3e7fa7bbdf3f406426d6563d662bdce67064b165eac31eeabfc0857ed170aaa612cf14ec9f9a464c + languageName: node + linkType: hard + "husky@npm:^8.0.3": version: 8.0.3 resolution: "husky@npm:8.0.3" @@ -5476,12 +6731,12 @@ __metadata: languageName: node linkType: hard -"i18next@npm:22.5.1": - version: 22.5.1 - resolution: "i18next@npm:22.5.1" +"i18next@npm:23.11.5": + version: 23.11.5 + resolution: "i18next@npm:23.11.5" dependencies: - "@babel/runtime": ^7.20.6 - checksum: 175f8ab7fac2abcee147b00cc2d8e7d4fa9b05cdc227f02cac841fc2fd9545ed4a6d88774f594f8ad12dc944e4d34cc8e88aa00c8b9947baef9e859d93abd305 + "@babel/runtime": ^7.23.2 + checksum: e9ec83703af59205af81f10929fd420314c0c976d1f4c42a191dc4d13f1284d13517105325286772571292953839c7183baa92e9bb43f41efe87dbc50c9aed1c languageName: node linkType: hard @@ -5503,7 +6758,14 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13": +"idb-keyval@npm:^6.2.1": + version: 6.2.1 + resolution: "idb-keyval@npm:6.2.1" + checksum: 7c0836f832096086e99258167740181132a71dd2694c8b8454a4f5ec69114ba6d70983115153306f0b6de1c8d3bad04f67eed3dff8f50c96815b9985d6d78470 + languageName: node + linkType: hard + +"ieee754@npm:^1.1.13, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e @@ -5565,7 +6827,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -5640,6 +6902,13 @@ __metadata: languageName: node linkType: hard +"iron-webcrypto@npm:^1.1.1": + version: 1.2.1 + resolution: "iron-webcrypto@npm:1.2.1" + checksum: b158d1893c8d037c11a7dcfd1998b519f31f979643c2c505c6eb1170fd63553498a58b05947d5dea116975df8f12ede5ca235cb68e4c1f404fa6695e4508c60c + languageName: node + linkType: hard + "is-arguments@npm:^1.0.4": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" @@ -5738,6 +7007,15 @@ __metadata: languageName: node linkType: hard +"is-docker@npm:^3.0.0": + version: 3.0.0 + resolution: "is-docker@npm:3.0.0" + bin: + is-docker: cli.js + checksum: b698118f04feb7eaf3338922bd79cba064ea54a1c3db6ec8c0c8d8ee7613e7e5854d802d3ef646812a8a3ace81182a085dfa0a71cc68b06f3fa794b9783b3c90 + languageName: node + linkType: hard + "is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" @@ -5777,6 +7055,17 @@ __metadata: languageName: node linkType: hard +"is-inside-container@npm:^1.0.0": + version: 1.0.0 + resolution: "is-inside-container@npm:1.0.0" + dependencies: + is-docker: ^3.0.0 + bin: + is-inside-container: cli.js + checksum: c50b75a2ab66ab3e8b92b3bc534e1ea72ca25766832c0623ac22d134116a98bcf012197d1caabe1d1c4bd5f84363d4aa5c36bb4b585fbcaf57be172cd10a1a03 + languageName: node + linkType: hard + "is-ip@npm:^2.0.0": version: 2.0.0 resolution: "is-ip@npm:2.0.0" @@ -5823,13 +7112,6 @@ __metadata: languageName: node linkType: hard -"is-plain-obj@npm:^2.1.0": - version: 2.1.0 - resolution: "is-plain-obj@npm:2.1.0" - checksum: cec9100678b0a9fe0248a81743041ed990c2d4c99f893d935545cfbc42876cbe86d207f3b895700c690ad2fa520e568c44afc1605044b535a7820c1d40e38daa - languageName: node - linkType: hard - "is-regex@npm:^1.1.4": version: 1.1.4 resolution: "is-regex@npm:1.1.4" @@ -5915,6 +7197,24 @@ __metadata: languageName: node linkType: hard +"is-wsl@npm:^3.1.0": + version: 3.1.0 + resolution: "is-wsl@npm:3.1.0" + dependencies: + is-inside-container: ^1.0.0 + checksum: f9734c81f2f9cf9877c5db8356bfe1ff61680f1f4c1011e91278a9c0564b395ae796addb4bf33956871041476ec82c3e5260ed57b22ac91794d4ae70a1d2f0a9 + languageName: node + linkType: hard + +"is64bit@npm:^2.0.0": + version: 2.0.0 + resolution: "is64bit@npm:2.0.0" + dependencies: + system-architecture: ^0.1.0 + checksum: 253079e64b6f9bb90295a63b73a046bea67364cdc104bc5abeffcf4cbc52b3e66b0e921cb14f686deb71b5cab628f9f490845c1194c6e94f84068d177c7f15cd + languageName: node + linkType: hard + "isarray@npm:^2.0.5": version: 2.0.5 resolution: "isarray@npm:2.0.5" @@ -5993,6 +7293,15 @@ __metadata: languageName: node linkType: hard +"jiti@npm:^1.21.0": + version: 1.21.6 + resolution: "jiti@npm:1.21.6" + bin: + jiti: bin/jiti.js + checksum: 9ea4a70a7bb950794824683ed1c632e2ede26949fbd348e2ba5ec8dc5efa54dc42022d85ae229cadaa60d4b95012e80ea07d625797199b688cc22ab0e8891d32 + languageName: node + linkType: hard + "joi@npm:^17.10.1": version: 17.13.3 resolution: "joi@npm:17.13.3" @@ -6098,14 +7407,10 @@ __metadata: languageName: node linkType: hard -"json-rpc-middleware-stream@npm:^4.2.1": - version: 4.2.3 - resolution: "json-rpc-middleware-stream@npm:4.2.3" - dependencies: - "@metamask/safe-event-emitter": ^3.0.0 - json-rpc-engine: ^6.1.0 - readable-stream: ^2.3.3 - checksum: 0907d34935a8b58c3c67626e344272758f684c13175b2e7de2bac37309c3211fca7a129bce042d50faed605615f51fbba01e173bdc2ae6c14d95aefb9bfb4e09 +"json-rpc-random-id@npm:^1.0.0, json-rpc-random-id@npm:^1.0.1": + version: 1.0.1 + resolution: "json-rpc-random-id@npm:1.0.1" + checksum: fcd2e884193a129ace4002bd65a86e9cdb206733b4693baea77bd8b372cf8de3043fbea27716a2c9a716581a908ca8d978d9dfec4847eb2cf77edb4cf4b2252c languageName: node linkType: hard @@ -6150,6 +7455,20 @@ __metadata: languageName: node linkType: hard +"jsonpath-plus@npm:^7.2.0": + version: 7.2.0 + resolution: "jsonpath-plus@npm:7.2.0" + checksum: 05f447339d29be861e307d6e812aec1b9b88a3ba6bba286966a4e8bed3e752bee3d715eabfc21dce968be85ccb48bf79d2c1af78da7b9b74cd1b446d4d5d02f5 + languageName: node + linkType: hard + +"just-clone@npm:^6.1.1": + version: 6.2.0 + resolution: "just-clone@npm:6.2.0" + checksum: 2c3353e3524aba8adae499973d9b8663eed3a647c73fd60149ac8a10031353e82ff1941820b56c96d12263424f50e564c7dd1fd330cf6de630455909810e13a6 + languageName: node + linkType: hard + "jwa@npm:^2.0.0": version: 2.0.0 resolution: "jwa@npm:2.0.0" @@ -6171,6 +7490,18 @@ __metadata: languageName: node linkType: hard +"keccak@npm:^3.0.3": + version: 3.0.4 + resolution: "keccak@npm:3.0.4" + dependencies: + node-addon-api: ^2.0.0 + node-gyp: latest + node-gyp-build: ^4.2.0 + readable-stream: ^3.6.0 + checksum: 2bf27b97b2f24225b1b44027de62be547f5c7326d87d249605665abd0c8c599d774671c35504c62c9b922cae02758504c6f76a73a84234d23af8a2211afaaa11 + languageName: node + linkType: hard + "keyv@npm:^4.5.3": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -6180,6 +7511,13 @@ __metadata: languageName: node linkType: hard +"keyvaluestorage-interface@npm:^1.0.0": + version: 1.0.0 + resolution: "keyvaluestorage-interface@npm:1.0.0" + checksum: e20530e71b738dc094ad170a91a98d4b9bdc772dd9044b23cdaaa102aafa8997b1ac867550a1e66ba1d64fcaa949214df31aed18413b4bac31e5fe1f2c76c9de + languageName: node + linkType: hard + "klaw@npm:^3.0.0": version: 3.0.0 resolution: "klaw@npm:3.0.0" @@ -6261,6 +7599,35 @@ __metadata: languageName: node linkType: hard +"listhen@npm:^1.7.2": + version: 1.7.2 + resolution: "listhen@npm:1.7.2" + dependencies: + "@parcel/watcher": ^2.4.1 + "@parcel/watcher-wasm": ^2.4.1 + citty: ^0.1.6 + clipboardy: ^4.0.0 + consola: ^3.2.3 + crossws: ^0.2.0 + defu: ^6.1.4 + get-port-please: ^3.1.2 + h3: ^1.10.2 + http-shutdown: ^1.2.2 + jiti: ^1.21.0 + mlly: ^1.6.1 + node-forge: ^1.3.1 + pathe: ^1.1.2 + std-env: ^3.7.0 + ufo: ^1.4.0 + untun: ^0.1.3 + uqr: ^0.1.2 + bin: + listen: bin/listhen.mjs + listhen: bin/listhen.mjs + checksum: 92b160ab493bbdb4941ba7fbfc7e0815b4c1da9ca01f792df2e77da13a6b726086d62d57cd2da51242c47a463d59a68798666fb8b64338510e2edf8dc2e7a1c3 + languageName: node + linkType: hard + "listr2@npm:6.6.1": version: 6.6.1 resolution: "listr2@npm:6.6.1" @@ -6280,6 +7647,37 @@ __metadata: languageName: node linkType: hard +"lit-element@npm:^3.3.0": + version: 3.3.3 + resolution: "lit-element@npm:3.3.3" + dependencies: + "@lit-labs/ssr-dom-shim": ^1.1.0 + "@lit/reactive-element": ^1.3.0 + lit-html: ^2.8.0 + checksum: 29a596fa556e231cce7246ca3e5687ad238f299b0cb374a0934d5e6fe9adf1436e031d4fbd21b280aabfc0e21a66e6c4b52da558a908df2566d09d960f3ca93d + languageName: node + linkType: hard + +"lit-html@npm:^2.8.0": + version: 2.8.0 + resolution: "lit-html@npm:2.8.0" + dependencies: + "@types/trusted-types": ^2.0.2 + checksum: 2d70df07248bcb2f502a3afb1e91d260735024fa669669ffb1417575aa39c3092779725ac1b90f5f39e4ce78c63f431f51176bc67f532389f0285a6991573255 + languageName: node + linkType: hard + +"lit@npm:2.8.0": + version: 2.8.0 + resolution: "lit@npm:2.8.0" + dependencies: + "@lit/reactive-element": ^1.6.0 + lit-element: ^3.3.0 + lit-html: ^2.8.0 + checksum: 2480e733f7d022d3ecba91abc58a20968f0ca8f5fa30b3341ecf4bcf4845e674ad27b721a5ae53529cafc6ca603c015b80d0979ceb7a711e268ef20bb6bc7527 + languageName: node + linkType: hard + "local-pkg@npm:^0.4.2": version: 0.4.3 resolution: "local-pkg@npm:0.4.3" @@ -6340,6 +7738,13 @@ __metadata: languageName: node linkType: hard +"lodash.isequal@npm:4.5.0": + version: 4.5.0 + resolution: "lodash.isequal@npm:4.5.0" + checksum: da27515dc5230eb1140ba65ff8de3613649620e8656b19a6270afe4866b7bd461d9ba2ac8a48dcc57f7adac4ee80e1de9f965d89d4d81a0ad52bb3eec2609644 + languageName: node + linkType: hard + "lodash.isplainobject@npm:^4.0.6": version: 4.0.6 resolution: "lodash.isplainobject@npm:4.0.6" @@ -6429,7 +7834,7 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0, lru-cache@npm:^10.4.3": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a @@ -6537,15 +7942,6 @@ __metadata: languageName: node linkType: hard -"merge-options@npm:^3.0.4": - version: 3.0.4 - resolution: "merge-options@npm:3.0.4" - dependencies: - is-plain-obj: ^2.1.0 - checksum: d86ddb3dd6e85d558dbf25dc944f3527b6bacb944db3fdda6e84a3f59c4e4b85231095f58b835758b9a57708342dee0f8de0dffa352974a48221487fe9f4584f - languageName: node - linkType: hard - "merge-stream@npm:^2.0.0": version: 2.0.0 resolution: "merge-stream@npm:2.0.0" @@ -6594,6 +7990,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.5": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: ^3.0.3 + picomatch: ^2.3.1 + checksum: 79920eb634e6f400b464a954fcfa589c4e7c7143209488e44baf627f9affc8b1e306f41f4f0deedde97e69cb725920879462d3e750ab3bd3c1aed675bb3a8966 + languageName: node + linkType: hard + "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -6628,6 +8034,15 @@ __metadata: languageName: node linkType: hard +"mime@npm:^3.0.0": + version: 3.0.0 + resolution: "mime@npm:3.0.0" + bin: + mime: cli.js + checksum: f43f9b7bfa64534e6b05bd6062961681aeb406a5b53673b53b683f27fcc4e739989941836a355eef831f4478923651ecc739f4a5f6e20a76487b432bfd4db928 + languageName: node + linkType: hard + "mimic-fn@npm:^2.1.0": version: 2.1.0 resolution: "mimic-fn@npm:2.1.0" @@ -6774,6 +8189,18 @@ __metadata: languageName: node linkType: hard +"mipd@npm:0.0.7": + version: 0.0.7 + resolution: "mipd@npm:0.0.7" + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: 14526f78d6d1bc8580898922508d64714f5abc7293b5998fe93c54237fd1cea120dc98674fe2b329ba3803bda5a85f3e442c3b1fa880e4c6b443bf73018514a8 + languageName: node + linkType: hard + "mkdirp-classic@npm:^0.5.2": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" @@ -6790,7 +8217,7 @@ __metadata: languageName: node linkType: hard -"mlly@npm:^1.1.0, mlly@npm:^1.7.1": +"mlly@npm:^1.1.0, mlly@npm:^1.6.1, mlly@npm:^1.7.1": version: 1.7.1 resolution: "mlly@npm:1.7.1" dependencies: @@ -6816,6 +8243,20 @@ __metadata: languageName: node linkType: hard +"motion@npm:10.16.2": + version: 10.16.2 + resolution: "motion@npm:10.16.2" + dependencies: + "@motionone/animation": ^10.15.1 + "@motionone/dom": ^10.16.2 + "@motionone/svelte": ^10.16.2 + "@motionone/types": ^10.15.1 + "@motionone/utils": ^10.15.1 + "@motionone/vue": ^10.16.2 + checksum: 0b91256808c2374d8b7f4ac5e7ed513f2ca8df2b7d1be4fbc00ec5baece5162ada648aedaa5bc1d60be9ad2e6c9bc1d3bb160333051c20ab79e241b8e02e3c92 + languageName: node + linkType: hard + "mri@npm:^1.2.0": version: 1.2.0 resolution: "mri@npm:1.2.0" @@ -6844,6 +8285,13 @@ __metadata: languageName: node linkType: hard +"multiformats@npm:^9.4.2": + version: 9.9.0 + resolution: "multiformats@npm:9.9.0" + checksum: d3e8c1be400c09a014f557ea02251a2710dbc9fca5aa32cc702ff29f636c5471e17979f30bdcb0a9cbb556f162a8591dc2e1219c24fc21394a56115b820bb84e + languageName: node + linkType: hard + "nan@npm:^2.18.0, nan@npm:^2.19.0": version: 2.20.0 resolution: "nan@npm:2.20.0" @@ -6862,6 +8310,13 @@ __metadata: languageName: node linkType: hard +"napi-wasm@npm:^1.1.0": + version: 1.1.3 + resolution: "napi-wasm@npm:1.1.3" + checksum: c02424b9e26f152ea1224bdf950d09292ab5f2069644d878c96aa416316f05ba58ae9a6f39f664c592b523e6f39b6b0b831a5987b10e26ce2154da3b4f2b7859 + languageName: node + linkType: hard + "natural-compare@npm:^1.4.0": version: 1.4.0 resolution: "natural-compare@npm:1.4.0" @@ -6894,6 +8349,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^2.0.0": + version: 2.0.2 + resolution: "node-addon-api@npm:2.0.2" + dependencies: + node-gyp: latest + checksum: 31fb22d674648204f8dd94167eb5aac896c841b84a9210d614bf5d97c74ef059cc6326389cf0c54d2086e35312938401d4cc82e5fcd679202503eb8ac84814f8 + languageName: node + linkType: hard + "node-addon-api@npm:^5.0.0": version: 5.1.0 resolution: "node-addon-api@npm:5.1.0" @@ -6903,6 +8367,15 @@ __metadata: languageName: node linkType: hard +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" + dependencies: + node-gyp: latest + checksum: 46051999e3289f205799dfaf6bcb017055d7569090f0004811110312e2db94cb4f8654602c7eb77a60a1a05142cc2b96e1b5c56ca4622c41a5c6370787faaf30 + languageName: node + linkType: hard + "node-domexception@npm:^1.0.0": version: 1.0.0 resolution: "node-domexception@npm:1.0.0" @@ -6910,6 +8383,13 @@ __metadata: languageName: node linkType: hard +"node-fetch-native@npm:^1.6.3, node-fetch-native@npm:^1.6.4": + version: 1.6.4 + resolution: "node-fetch-native@npm:1.6.4" + checksum: 7b159f610e037e8813750096a6616ec6771e9abf868aa6e75e5b790bfc2ba2d92cf2abcce33c18fd01f2e5e5cc72de09c78bd4381e7f8c0887f7de21bd96f045 + languageName: node + linkType: hard + "node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.7, node-fetch@npm:^2.6.9": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -6973,7 +8453,7 @@ __metadata: languageName: node linkType: hard -"nodemon@npm:^3.0.1": +"nodemon@npm:^3.1.4": version: 3.1.4 resolution: "nodemon@npm:3.1.4" dependencies: @@ -7114,6 +8594,31 @@ __metadata: languageName: node linkType: hard +"ofetch@npm:^1.3.4": + version: 1.3.4 + resolution: "ofetch@npm:1.3.4" + dependencies: + destr: ^2.0.3 + node-fetch-native: ^1.6.3 + ufo: ^1.5.3 + checksum: 46749d5bf88cc924657520fa409ece473ee7d70303a374e0acf8a88883576be515861b2342b4e5d491776e2da9c8c52911c3ef298329619ef34832a5a4ffe64c + languageName: node + linkType: hard + +"ohash@npm:^1.1.3": + version: 1.1.3 + resolution: "ohash@npm:1.1.3" + checksum: 44c7321cb950ce6e87d46584fd5cc8dd3dd15fcd4ade0ac2995d0497dc6b6b1ae9bd844c59af185d63923da5cfe9b37ae37a9dbd9ac455f3ad0cdfb5a73d5ef6 + languageName: node + linkType: hard + +"on-exit-leak-free@npm:^0.2.0": + version: 0.2.0 + resolution: "on-exit-leak-free@npm:0.2.0" + checksum: d22b0f0538069110626b578db6e68b6ee0e85b1ee9cc5ef9b4de1bba431431d6a8da91a61e09d2ad46f22a96f968e5237833cb9d0b69bc4d294f7ec82f609b05 + languageName: node + linkType: hard + "on-finished@npm:2.4.1, on-finished@npm:^2.3.0": version: 2.4.1 resolution: "on-finished@npm:2.4.1" @@ -7341,7 +8846,7 @@ __metadata: languageName: node linkType: hard -"pathe@npm:^1.1.0, pathe@npm:^1.1.2": +"pathe@npm:^1.1.0, pathe@npm:^1.1.1, pathe@npm:^1.1.2": version: 1.1.2 resolution: "pathe@npm:1.1.2" checksum: ec5f778d9790e7b9ffc3e4c1df39a5bb1ce94657a4e3ad830c1276491ca9d79f189f47609884671db173400256b005f4955f7952f52a2aeb5834ad5fb4faf134 @@ -7385,6 +8890,58 @@ __metadata: languageName: node linkType: hard +"pify@npm:^3.0.0": + version: 3.0.0 + resolution: "pify@npm:3.0.0" + checksum: 6cdcbc3567d5c412450c53261a3f10991665d660961e06605decf4544a61a97a54fefe70a68d5c37080ff9d6f4cf51444c90198d1ba9f9309a6c0d6e9f5c4fde + languageName: node + linkType: hard + +"pify@npm:^5.0.0": + version: 5.0.0 + resolution: "pify@npm:5.0.0" + checksum: 443e3e198ad6bfa8c0c533764cf75c9d5bc976387a163792fb553ffe6ce923887cf14eebf5aea9b7caa8eab930da8c33612990ae85bd8c2bc18bedb9eae94ecb + languageName: node + linkType: hard + +"pino-abstract-transport@npm:v0.5.0": + version: 0.5.0 + resolution: "pino-abstract-transport@npm:0.5.0" + dependencies: + duplexify: ^4.1.2 + split2: ^4.0.0 + checksum: c503f867de3189f8217ab9cf794e8a631dddd0029a829f0f985f5511308152ebd53e363764fbc5570b3d1c715b341e3923456ce16ad84cd41be2b9a074ada234 + languageName: node + linkType: hard + +"pino-std-serializers@npm:^4.0.0": + version: 4.0.0 + resolution: "pino-std-serializers@npm:4.0.0" + checksum: 89d487729b58c9d3273a0ee851ead068d6d2e2ccc1af8e1c1d28f1b3442423679bec7ec04d9a2aba36f94f335e82be9f4de19dc4fbc161e71c136aaa15b85ad3 + languageName: node + linkType: hard + +"pino@npm:7.11.0": + version: 7.11.0 + resolution: "pino@npm:7.11.0" + dependencies: + atomic-sleep: ^1.0.0 + fast-redact: ^3.0.0 + on-exit-leak-free: ^0.2.0 + pino-abstract-transport: v0.5.0 + pino-std-serializers: ^4.0.0 + process-warning: ^1.0.0 + quick-format-unescaped: ^4.0.3 + real-require: ^0.1.0 + safe-stable-stringify: ^2.1.0 + sonic-boom: ^2.2.1 + thread-stream: ^0.15.1 + bin: + pino: bin.js + checksum: b919e7dbe41de978bb050dcef94fd687c012eb78d344a18f75f04ce180d5810fc162be1f136722d70cd005ed05832c4023a38b9acbc1076ae63c9f5ec5ca515c + languageName: node + linkType: hard + "pkg-types@npm:^1.1.1": version: 1.1.3 resolution: "pkg-types@npm:1.1.3" @@ -7396,6 +8953,20 @@ __metadata: languageName: node linkType: hard +"pngjs@npm:^5.0.0": + version: 5.0.0 + resolution: "pngjs@npm:5.0.0" + checksum: 04e912cc45fb9601564e2284efaf0c5d20d131d9b596244f8a6789fc6cdb6b18d2975a6bbf7a001858d7e159d5c5c5dd7b11592e97629b7137f7f5cef05904c8 + languageName: node + linkType: hard + +"pony-cause@npm:^2.1.10": + version: 2.1.11 + resolution: "pony-cause@npm:2.1.11" + checksum: 4aaa9ddab8f8225b5cbb32f7329a71b73679074579fa91f9e9d6853d398f3c2872de979519e1525c0c91d53afc82c32fddb76e379d19157e69ef1f7064523dfa + languageName: node + linkType: hard + "possible-typed-array-names@npm:^1.0.0": version: 1.0.0 resolution: "possible-typed-array-names@npm:1.0.0" @@ -7414,6 +8985,13 @@ __metadata: languageName: node linkType: hard +"preact@npm:^10.16.0": + version: 10.23.2 + resolution: "preact@npm:10.23.2" + checksum: 1df6a9d72480c42b4985c1344941184422374c48af0f1e9df0de8d1c3f1f85c996d3a9e2850c8256abe39352d8fd174dd95e2f4177433022661baabfb6547f2c + languageName: node + linkType: hard + "prelude-ls@npm:^1.2.1": version: 1.2.1 resolution: "prelude-ls@npm:1.2.1" @@ -7483,17 +9061,24 @@ __metadata: languageName: node linkType: hard -"process-nextick-args@npm:~1.0.6": - version: 1.0.7 - resolution: "process-nextick-args@npm:1.0.7" - checksum: 41224fbc803ac6c96907461d4dfc20942efa3ca75f2d521bcf7cf0e89f8dec127fb3fb5d76746b8fb468a232ea02d84824fae08e027aec185fd29049c66d49f8 +"process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf + languageName: node + linkType: hard + +"process-warning@npm:^1.0.0": + version: 1.0.0 + resolution: "process-warning@npm:1.0.0" + checksum: c708a03241deec3cabaeee39c4f9ee8c4d71f1c5ef9b746c8252cdb952a6059068cfcdaf348399775244cbc441b6ae5e26a9c87ed371f88335d84f26d19180f9 languageName: node linkType: hard -"process-nextick-args@npm:~2.0.0": - version: 2.0.1 - resolution: "process-nextick-args@npm:2.0.1" - checksum: 1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf +"process@npm:^0.11.10": + version: 0.11.10 + resolution: "process@npm:0.11.10" + checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 languageName: node linkType: hard @@ -7623,6 +9208,13 @@ __metadata: languageName: node linkType: hard +"proxy-compare@npm:2.5.1": + version: 2.5.1 + resolution: "proxy-compare@npm:2.5.1" + checksum: c7cc151ac255150bcb24becde6495b3e399416c31991af377ce082255b51f07eaeb5d861bf8bf482703e92f88b90a5892ad57d3153ea29450d03ef921683d9fa + languageName: node + linkType: hard + "proxy-from-env@npm:^1.1.0": version: 1.1.0 resolution: "proxy-from-env@npm:1.1.0" @@ -7704,12 +9296,26 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.10.3": - version: 6.10.3 - resolution: "qs@npm:6.10.3" +"qrcode@npm:1.5.3": + version: 1.5.3 + resolution: "qrcode@npm:1.5.3" + dependencies: + dijkstrajs: ^1.0.1 + encode-utf8: ^1.0.3 + pngjs: ^5.0.0 + yargs: ^15.3.1 + bin: + qrcode: bin/qrcode + checksum: 9a8a20a0a9cb1d15de8e7b3ffa214e8b6d2a8b07655f25bd1b1d77f4681488f84d7bae569870c0652872d829d5f8ac4922c27a6bd14c13f0e197bf07b28dead7 + languageName: node + linkType: hard + +"qs@npm:6.11.0": + version: 6.11.0 + resolution: "qs@npm:6.11.0" dependencies: side-channel: ^1.0.4 - checksum: 0fac5e6c7191d0295a96d0e83c851aeb015df7e990e4d3b093897d3ac6c94e555dbd0a599739c84d7fa46d7fee282d94ba76943983935cf33bba6769539b8019 + checksum: 6e1f29dd5385f7488ec74ac7b6c92f4d09a90408882d0c208414a34dd33badc1a621019d4c799a3df15ab9b1d0292f97c1dd71dc7c045e69f81a8064e5af7297 languageName: node linkType: hard @@ -7722,6 +9328,18 @@ __metadata: languageName: node linkType: hard +"query-string@npm:7.1.3": + version: 7.1.3 + resolution: "query-string@npm:7.1.3" + dependencies: + decode-uri-component: ^0.2.2 + filter-obj: ^1.1.0 + split-on-first: ^1.0.0 + strict-uri-encode: ^2.0.0 + checksum: 91af02dcd9cc9227a052841d5c2eecb80a0d6489d05625df506a097ef1c59037cfb5e907f39b84643cbfd535c955abec3e553d0130a7b510120c37d06e0f4346 + languageName: node + linkType: hard + "queue-microtask@npm:^1.2.2": version: 1.2.3 resolution: "queue-microtask@npm:1.2.3" @@ -7729,6 +9347,20 @@ __metadata: languageName: node linkType: hard +"quick-format-unescaped@npm:^4.0.3": + version: 4.0.4 + resolution: "quick-format-unescaped@npm:4.0.4" + checksum: 7bc32b99354a1aa46c089d2a82b63489961002bb1d654cee3e6d2d8778197b68c2d854fd23d8422436ee1fdfd0abaddc4d4da120afe700ade68bd357815b26fd + languageName: node + linkType: hard + +"radix3@npm:^1.1.2": + version: 1.1.2 + resolution: "radix3@npm:1.1.2" + checksum: c4d49a3f603b5b7b7704dd907383c8884d12064d6d475f7ca8b05ecc7604d3bd73524b55e0fbcca0f7c9da3a2e9b473a6b4fbc0b639c29c2b0e85020ebda67d3 + languageName: node + linkType: hard + "range-parser@npm:~1.2.1": version: 1.2.1 resolution: "range-parser@npm:1.2.1" @@ -7736,15 +9368,15 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.5.1": - version: 2.5.1 - resolution: "raw-body@npm:2.5.1" +"raw-body@npm:2.5.2": + version: 2.5.2 + resolution: "raw-body@npm:2.5.2" dependencies: bytes: 3.1.2 http-errors: 2.0.0 iconv-lite: 0.4.24 unpipe: 1.0.0 - checksum: 5362adff1575d691bb3f75998803a0ffed8c64eabeaa06e54b4ada25a0cd1b2ae7f4f5ec46565d1bec337e08b5ac90c76eaa0758de6f72a633f025d754dec29e + checksum: ba1583c8d8a48e8fbb7a873fdbb2df66ea4ff83775421bfe21ee120140949ab048200668c47d9ae3880012f6e217052690628cf679ddfbd82c9fc9358d574676 languageName: node linkType: hard @@ -7768,21 +9400,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:2.3.3": - version: 2.3.3 - resolution: "readable-stream@npm:2.3.3" - dependencies: - core-util-is: ~1.0.0 - inherits: ~2.0.3 - isarray: ~1.0.0 - process-nextick-args: ~1.0.6 - safe-buffer: ~5.1.1 - string_decoder: ~1.0.3 - util-deprecate: ~1.0.1 - checksum: 76f9863065d7edc14abd78e68784048487e83a4b6908336ba3eacb5e9544d642ad60836f91fab16e1dc6ad9e493dfe6c2e5b65f370ec65454d415efa50361a76 - languageName: node - linkType: hard - "readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.5, readable-stream@npm:^2.3.3": version: 2.3.8 resolution: "readable-stream@npm:2.3.8" @@ -7809,6 +9426,19 @@ __metadata: languageName: node linkType: hard +"readable-stream@npm:^3.6.2 || ^4.4.2": + version: 4.5.2 + resolution: "readable-stream@npm:4.5.2" + dependencies: + abort-controller: ^3.0.0 + buffer: ^6.0.3 + events: ^3.3.0 + process: ^0.11.10 + string_decoder: ^1.3.0 + checksum: c4030ccff010b83e4f33289c535f7830190773e274b3fcb6e2541475070bdfd69c98001c3b0cb78763fc00c8b62f514d96c2b10a8bd35d5ce45203a25fa1d33a + languageName: node + linkType: hard + "readdir-glob@npm:^1.1.2": version: 1.1.3 resolution: "readdir-glob@npm:1.1.3" @@ -7827,6 +9457,13 @@ __metadata: languageName: node linkType: hard +"real-require@npm:^0.1.0": + version: 0.1.0 + resolution: "real-require@npm:0.1.0" + checksum: 96745583ed4f82cd5c6a6af012fd1d3c6fc2f13ae1bcff1a3c4f8094696013a1a07c82c5aa66a403d7d4f84949fc2203bc927c7ad120caad125941ca2d7e5e8e + languageName: node + linkType: hard + "rechoir@npm:^0.6.2": version: 0.6.2 resolution: "rechoir@npm:0.6.2" @@ -7850,6 +9487,18 @@ __metadata: languageName: node linkType: hard +"redis-om@npm:^0.4.6": + version: 0.4.6 + resolution: "redis-om@npm:0.4.6" + dependencies: + jsonpath-plus: ^7.2.0 + just-clone: ^6.1.1 + redis: ^4.6.4 + ulid: ^2.3.0 + checksum: 31f25ebb9eea60f4aae9b155773a4738dcb4ad5c1610a3e529977118a8941ed4a30fb319c6361731dec90c3520ffe5d850d4319c4272dcd6ad5c2e50f05e2b35 + languageName: node + linkType: hard + "redis-parser@npm:^3.0.0": version: 3.0.0 resolution: "redis-parser@npm:3.0.0" @@ -7871,6 +9520,20 @@ __metadata: languageName: node linkType: hard +"redis@npm:^4.6.4, redis@npm:^4.7.0": + version: 4.7.0 + resolution: "redis@npm:4.7.0" + dependencies: + "@redis/bloom": 1.2.0 + "@redis/client": 1.6.0 + "@redis/graph": 1.1.1 + "@redis/json": 1.0.7 + "@redis/search": 1.2.0 + "@redis/time-series": 1.1.0 + checksum: 625172dd913118241288c33f351cda42630819bc82a1dc31f22e1d3e0a4267075ecb851aecfaf106a0c73ff287a434a3df3d2a8ce46713acf68d34d66efc39ec + languageName: node + linkType: hard + "redlock@npm:^5.0.0-beta.2": version: 5.0.0-beta2 resolution: "redlock@npm:5.0.0-beta2" @@ -7913,6 +9576,13 @@ __metadata: languageName: node linkType: hard +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: e9e294695fea08b076457e9ddff854e81bffbe248ed34c1eec348b7abbd22a0d02e8d75506559e2265e96978f3c4720bd77a6dad84755de8162b357eb6c778c7 + languageName: node + linkType: hard + "requizzle@npm:^0.2.3": version: 0.2.4 resolution: "requizzle@npm:0.2.4" @@ -8102,6 +9772,13 @@ __metadata: languageName: node linkType: hard +"safe-stable-stringify@npm:^2.1.0": + version: 2.5.0 + resolution: "safe-stable-stringify@npm:2.5.0" + checksum: d3ce103ed43c6c2f523e39607208bfb1c73aa48179fc5be53c3aa97c118390bffd4d55e012f5393b982b65eb3e0ee954dd57b547930d3f242b0053dcdb923d17 + languageName: node + linkType: hard + "safe-stable-stringify@npm:^2.3.1": version: 2.4.3 resolution: "safe-stable-stringify@npm:2.4.3" @@ -8157,7 +9834,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3": +"semver@npm:^7.1.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": version: 7.6.3 resolution: "semver@npm:7.6.3" bin: @@ -8199,6 +9876,13 @@ __metadata: languageName: node linkType: hard +"set-blocking@npm:^2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 + languageName: node + linkType: hard + "set-function-length@npm:^1.2.1": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" @@ -8232,6 +9916,18 @@ __metadata: languageName: node linkType: hard +"sha.js@npm:^2.4.11": + version: 2.4.11 + resolution: "sha.js@npm:2.4.11" + dependencies: + inherits: ^2.0.1 + safe-buffer: ^5.0.1 + bin: + sha.js: ./bin.js + checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -8294,7 +9990,7 @@ __metadata: languageName: node linkType: hard -"signal-exit@npm:^4.0.1": +"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0": version: 4.1.0 resolution: "signal-exit@npm:4.1.0" checksum: 64c757b498cb8629ffa5f75485340594d2f8189e9b08700e69199069c8e3070fb3e255f7ab873c05dc0b3cec412aea7402e10a5990cb6a050bd33ba062a6c549 @@ -8404,6 +10100,15 @@ __metadata: languageName: node linkType: hard +"sonic-boom@npm:^2.2.1": + version: 2.8.0 + resolution: "sonic-boom@npm:2.8.0" + dependencies: + atomic-sleep: ^1.0.0 + checksum: c7f9c89f931d7f60f8e0741551a729f0d81e6dc407a99420fc847a9a4c25af048a615b1188ab3c4f1fb3708fe4904973ddab6ebcc8ed5b78b50ab81a99045910 + languageName: node + linkType: hard + "source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.2.0": version: 1.2.0 resolution: "source-map-js@npm:1.2.0" @@ -8449,6 +10154,20 @@ __metadata: languageName: node linkType: hard +"split-on-first@npm:^1.0.0": + version: 1.1.0 + resolution: "split-on-first@npm:1.1.0" + checksum: 16ff85b54ddcf17f9147210a4022529b343edbcbea4ce977c8f30e38408b8d6e0f25f92cd35b86a524d4797f455e29ab89eb8db787f3c10708e0b47ebf528d30 + languageName: node + linkType: hard + +"split2@npm:^4.0.0": + version: 4.2.0 + resolution: "split2@npm:4.2.0" + checksum: 05d54102546549fe4d2455900699056580cca006c0275c334611420f854da30ac999230857a85fdd9914dc2109ae50f80fda43d2a445f2aa86eccdc1dfce779d + languageName: node + linkType: hard + "sprintf-js@npm:^1.1.3": version: 1.1.3 resolution: "sprintf-js@npm:1.1.3" @@ -8566,10 +10285,10 @@ __metadata: eslint-plugin-import: ^2.27.5 eslint-plugin-prettier: ^4.2.1 eslint-plugin-sort-imports-es6-autofix: ^0.6.0 - express: 4.18.1 + express: ^4.19.2 express-validator: 6.14.2 - gasp-sdk: 0.0.2-eth-rollup-develop.14 - gasp-types: 0.0.2-eth-rollup-develop.14 + gasp-sdk: 0.0.2-eth-rollup-develop.29 + gasp-types: 0.0.2-eth-rollup-develop.29 husky: ^8.0.3 ioredis: ^5.3.0 joi: ^17.10.1 @@ -8577,9 +10296,11 @@ __metadata: lodash: ^4.17.21 moment: ^2.29.4 node-fetch: ^3.2.10 - nodemon: ^3.0.1 + nodemon: ^3.1.4 prettier: ^2.8.6 pretty-quick: ^3.1.3 + redis: ^4.7.0 + redis-om: ^0.4.6 redlock: ^5.0.0-beta.2 rimraf: ^3.0.2 sass: 1.55.0 @@ -8609,7 +10330,7 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.3.1": +"std-env@npm:^3.3.1, std-env@npm:^3.7.0": version: 3.7.0 resolution: "std-env@npm:3.7.0" checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 @@ -8632,6 +10353,13 @@ __metadata: languageName: node linkType: hard +"strict-uri-encode@npm:^2.0.0": + version: 2.0.0 + resolution: "strict-uri-encode@npm:2.0.0" + checksum: eaac4cf978b6fbd480f1092cab8b233c9b949bcabfc9b598dd79a758f7243c28765ef7639c876fa72940dac687181b35486ea01ff7df3e65ce3848c64822c581 + languageName: node + linkType: hard + "string-argv@npm:0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" @@ -8695,7 +10423,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1, string_decoder@npm:^1.3.0": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -8704,15 +10432,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:~1.0.3": - version: 1.0.3 - resolution: "string_decoder@npm:1.0.3" - dependencies: - safe-buffer: ~5.1.0 - checksum: 57ef02a148fd1ff2f20fe1accd944505ed3703e78bb28d302d940b2ad3dfb469508f79dcd0275ba1960d9675aa206452f76b2416059a6d0b0200bd7e9f552cdb - languageName: node - linkType: hard - "string_decoder@npm:~1.1.1": version: 1.1.1 resolution: "string_decoder@npm:1.1.1" @@ -8883,6 +10602,13 @@ __metadata: languageName: node linkType: hard +"system-architecture@npm:^0.1.0": + version: 0.1.0 + resolution: "system-architecture@npm:0.1.0" + checksum: ca0dd793c45c354ab57dd7fc8ce7dc9923a6e07382bd3b22eb5b08f55ddb0217c390d00767549c5155fd4ce7ef23ffdd8cfb33dd4344cbbd37837d085a50f6f0 + languageName: node + linkType: hard + "tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" @@ -9003,6 +10729,15 @@ __metadata: languageName: node linkType: hard +"thread-stream@npm:^0.15.1": + version: 0.15.2 + resolution: "thread-stream@npm:0.15.2" + dependencies: + real-require: ^0.1.0 + checksum: 0547795a8f357ba1ac0dba29c71f965182e29e21752951a04a7167515ee37524bfba6c410f31e65a01a8d3e5b93400b812889aa09523e38ce4d744c894ffa6c0 + languageName: node + linkType: hard + "tiny-case@npm:^1.0.3": version: 1.0.3 resolution: "tiny-case@npm:1.0.3" @@ -9150,13 +10885,20 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^1.8.1": +"tslib@npm:1.14.1, tslib@npm:^1.8.1": version: 1.14.1 resolution: "tslib@npm:1.14.1" checksum: dbe628ef87f66691d5d2959b3e41b9ca0045c3ee3c7c7b906cc1e328b39f199bb1ad9e671c39025bd56122ac57dfbf7385a94843b1cc07c60a4db74795829acd languageName: node linkType: hard +"tslib@npm:^2.0.0, tslib@npm:^2.3.1": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 + languageName: node + linkType: hard + "tslib@npm:^2.1.0, tslib@npm:^2.3.0, tslib@npm:^2.6.2": version: 2.6.3 resolution: "tslib@npm:2.6.3" @@ -9324,7 +11066,7 @@ __metadata: languageName: node linkType: hard -"ufo@npm:^1.5.3": +"ufo@npm:^1.4.0, ufo@npm:^1.5.3, ufo@npm:^1.5.4": version: 1.5.4 resolution: "ufo@npm:1.5.4" checksum: f244703b7d4f9f0df4f9af23921241ab73410b591f4e5b39c23e3147f3159b139a4b1fb5903189c306129f7a16b55995dac0008e0fbae88a37c3e58cbc34d833 @@ -9340,6 +11082,33 @@ __metadata: languageName: node linkType: hard +"uint8arrays@npm:3.1.0": + version: 3.1.0 + resolution: "uint8arrays@npm:3.1.0" + dependencies: + multiformats: ^9.4.2 + checksum: 77fe0c8644417a849f5cfc0e5a5308c65e3b779a56f816dd27b8f60f7fac1ac7626f57c9abacec77d147beb5da8401b86438b1591d93cae7f7511a3211cc01b3 + languageName: node + linkType: hard + +"uint8arrays@npm:^3.0.0": + version: 3.1.1 + resolution: "uint8arrays@npm:3.1.1" + dependencies: + multiformats: ^9.4.2 + checksum: b93b6c3f0a526b116799f3a3409bd4b5d5553eb3e73e485998ece7974742254fbc0d2f7988dd21ac86c4b974552f45d9ae9cf9cba9647e529f8eb1fdd2ed84d0 + languageName: node + linkType: hard + +"ulid@npm:^2.3.0": + version: 2.3.0 + resolution: "ulid@npm:2.3.0" + bin: + ulid: ./bin/cli.js + checksum: d6dbf253fdc189f60fe2829d934ee5447b3dab62d05449a2e0fe89670d77087dd6eba4f844a69f9ffdb01384ec6fd97bdd9be638fc67d593569a45e8969f1e69 + languageName: node + linkType: hard + "unbox-primitive@npm:^1.0.2": version: 1.0.2 resolution: "unbox-primitive@npm:1.0.2" @@ -9352,6 +11121,13 @@ __metadata: languageName: node linkType: hard +"uncrypto@npm:^0.1.3": + version: 0.1.3 + resolution: "uncrypto@npm:0.1.3" + checksum: 07160e08806dd6cea16bb96c3fd54cd70fc801e02fc3c6f86980144d15c9ebbd1c55587f7280a207b3af6cd34901c0d0b77ada5a02c2f7081a033a05acf409e2 + languageName: node + linkType: hard + "undefsafe@npm:^2.0.5": version: 2.0.5 resolution: "undefsafe@npm:2.0.5" @@ -9373,6 +11149,19 @@ __metadata: languageName: node linkType: hard +"unenv@npm:^1.9.0": + version: 1.10.0 + resolution: "unenv@npm:1.10.0" + dependencies: + consola: ^3.2.3 + defu: ^6.1.4 + mime: ^3.0.0 + node-fetch-native: ^1.6.4 + pathe: ^1.1.2 + checksum: 4510b20adb2d4481d5ea9996aa37f452add8085fbee76838088c57750014a5a6d6b05f9599333fdc32e7fcb52064ffbd39ee47d9d1c5d634109651ed260819d5 + languageName: node + linkType: hard + "unique-filename@npm:^3.0.0": version: 3.0.0 resolution: "unique-filename@npm:3.0.0" @@ -9398,6 +11187,85 @@ __metadata: languageName: node linkType: hard +"unstorage@npm:^1.9.0": + version: 1.12.0 + resolution: "unstorage@npm:1.12.0" + dependencies: + anymatch: ^3.1.3 + chokidar: ^3.6.0 + destr: ^2.0.3 + h3: ^1.12.0 + listhen: ^1.7.2 + lru-cache: ^10.4.3 + mri: ^1.2.0 + node-fetch-native: ^1.6.4 + ofetch: ^1.3.4 + ufo: ^1.5.4 + peerDependencies: + "@azure/app-configuration": ^1.7.0 + "@azure/cosmos": ^4.1.1 + "@azure/data-tables": ^13.2.2 + "@azure/identity": ^4.4.1 + "@azure/keyvault-secrets": ^4.8.0 + "@azure/storage-blob": ^12.24.0 + "@capacitor/preferences": ^6.0.2 + "@netlify/blobs": ^6.5.0 || ^7.0.0 + "@planetscale/database": ^1.19.0 + "@upstash/redis": ^1.34.0 + "@vercel/kv": ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.4.1 + peerDependenciesMeta: + "@azure/app-configuration": + optional: true + "@azure/cosmos": + optional: true + "@azure/data-tables": + optional: true + "@azure/identity": + optional: true + "@azure/keyvault-secrets": + optional: true + "@azure/storage-blob": + optional: true + "@capacitor/preferences": + optional: true + "@netlify/blobs": + optional: true + "@planetscale/database": + optional: true + "@upstash/redis": + optional: true + "@vercel/kv": + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + checksum: 894d0009b5336d256fbea63c3c902df4b85084e5670e2fdc6359c0f18aa7de4479eabbdced9ff0e16d7c21cd8b00c1ac657ca002627f29f4838e1a60362c2567 + languageName: node + linkType: hard + +"untun@npm:^0.1.3": + version: 0.1.3 + resolution: "untun@npm:0.1.3" + dependencies: + citty: ^0.1.5 + consola: ^3.2.3 + pathe: ^1.1.1 + bin: + untun: bin/untun.mjs + checksum: ad886c242dbac250f88ef6f18ad780fa084d07e4d030ab5ceacfe4378aa4bf2d3549b8ed8352bad5776facd9aaee05e3f914c661adc11bace867e2a12fd7bee5 + languageName: node + linkType: hard + +"uqr@npm:^0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 717766f03814172f5a9934dae2c4c48f6de065a4fd7da82aa513bd8300b621c1e606efdd174478cab79093e5ba244a99f0c0b1b0b9c0175656ab5e637a006d92 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -9407,13 +11275,22 @@ __metadata: languageName: node linkType: hard -"utf-8-validate@npm:^6.0.3": - version: 6.0.4 - resolution: "utf-8-validate@npm:6.0.4" +"use-sync-external-store@npm:1.2.0": + version: 1.2.0 + resolution: "use-sync-external-store@npm:1.2.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 5c639e0f8da3521d605f59ce5be9e094ca772bd44a4ce7322b055a6f58eeed8dda3c94cabd90c7a41fb6fa852210092008afe48f7038792fd47501f33299116a + languageName: node + linkType: hard + +"utf-8-validate@npm:^5.0.2": + version: 5.0.10 + resolution: "utf-8-validate@npm:5.0.10" dependencies: node-gyp: latest node-gyp-build: ^4.3.0 - checksum: ccbfbceeed7cbad62282aed5420236d38006453ce583cf9021ad6225c2d15996a660a3b3bdd2b9344b4d3b5df5673fbaf9e70c3637628a2cd58824089d9d9153 + checksum: 5579350a023c66a2326752b6c8804cc7b39dcd251bb088241da38db994b8d78352e388dcc24ad398ab98385ba3c5ffcadb6b5b14b2637e43f767869055e46ba6 languageName: node linkType: hard @@ -9453,7 +11330,7 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.0": +"uuid@npm:^9.0.0, uuid@npm:^9.0.1": version: 9.0.1 resolution: "uuid@npm:9.0.1" bin: @@ -9487,6 +11364,24 @@ __metadata: languageName: node linkType: hard +"valtio@npm:1.11.2": + version: 1.11.2 + resolution: "valtio@npm:1.11.2" + dependencies: + proxy-compare: 2.5.1 + use-sync-external-store: 1.2.0 + peerDependencies: + "@types/react": ">=16.8" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + react: + optional: true + checksum: cce2d9212aac9fc4bdeba2d381188cc831cfe8d2d03039024cfcd58ba1801f2a5b14d01c2bb21a2c9f12046d2ede64f1dd887175185f39bee553677a35592c30 + languageName: node + linkType: hard + "vary@npm:^1, vary@npm:~1.1.2": version: 1.1.2 resolution: "vary@npm:1.1.2" @@ -9494,6 +11389,28 @@ __metadata: languageName: node linkType: hard +"viem@npm:^2.1.1, viem@npm:^2.17.4": + version: 2.21.3 + resolution: "viem@npm:2.21.3" + dependencies: + "@adraffy/ens-normalize": 1.10.0 + "@noble/curves": 1.4.0 + "@noble/hashes": 1.4.0 + "@scure/bip32": 1.4.0 + "@scure/bip39": 1.4.0 + abitype: 1.0.5 + isows: 1.0.4 + webauthn-p256: 0.0.5 + ws: 8.17.1 + peerDependencies: + typescript: ">=5.0.4" + peerDependenciesMeta: + typescript: + optional: true + checksum: d54bebbae0e666dd90ee7e73ebd60e58ff4c47b8574843b03104da6548d4b96caa080d261fd4f0175a108c0e4d618e1576bdd14fa84f342301ead530db7788e2 + languageName: node + linkType: hard + "viem@npm:^2.18.6": version: 2.18.6 resolution: "viem@npm:2.18.6" @@ -9632,6 +11549,25 @@ __metadata: languageName: node linkType: hard +"wagmi@npm:^2.10.10": + version: 2.12.8 + resolution: "wagmi@npm:2.12.8" + dependencies: + "@wagmi/connectors": 5.1.8 + "@wagmi/core": 2.13.4 + use-sync-external-store: 1.2.0 + peerDependencies: + "@tanstack/react-query": ">=5.0.0" + react: ">=18" + typescript: ">=5.0.4" + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + checksum: 1d94101533303b954e15787996ddd5c19c59c3cf06ebb160e4235d1505fc31625cde0357472e30e36f9f5ec5fd5940c0b6c2863efdb8ca1b32526a3fc5e104d2 + languageName: node + linkType: hard + "web-streams-polyfill@npm:^3.0.3": version: 3.3.3 resolution: "web-streams-polyfill@npm:3.3.3" @@ -9649,15 +11585,6 @@ __metadata: languageName: node linkType: hard -"webextension-polyfill-ts@npm:^0.25.0": - version: 0.25.0 - resolution: "webextension-polyfill-ts@npm:0.25.0" - dependencies: - webextension-polyfill: ^0.7.0 - checksum: c4dc82c86e34cea717a26af549f2822d63e92af52632f5e909ea13b5e7bd9d6110781f10313e36ada2b54c770ebca018bc3784756d12ba3b0b623d285f1a14a7 - languageName: node - linkType: hard - "webextension-polyfill@npm:>=0.10.0 <1.0": version: 0.12.0 resolution: "webextension-polyfill@npm:0.12.0" @@ -9665,10 +11592,10 @@ __metadata: languageName: node linkType: hard -"webextension-polyfill@npm:^0.7.0": - version: 0.7.0 - resolution: "webextension-polyfill@npm:0.7.0" - checksum: fb738a5de07feb593875e02f25c3ab4276c8736118929556c8d4bdf965bb0f11c96ea263cd397b9b21259e8faf2dce2eaaa42ce08c922d96de7adb5896ec7d10 +"webextension-polyfill@npm:^0.10.0": + version: 0.10.0 + resolution: "webextension-polyfill@npm:0.10.0" + checksum: 4a59036bda571360c2c0b2fb03fe1dc244f233946bcf9a6766f677956c40fd14d270aaa69cdba95e4ac521014afbe4008bfa5959d0ac39f91c990eb206587f91 languageName: node linkType: hard @@ -9702,6 +11629,13 @@ __metadata: languageName: node linkType: hard +"which-module@npm:^2.0.0": + version: 2.0.1 + resolution: "which-module@npm:2.0.1" + checksum: 1967b7ce17a2485544a4fdd9063599f0f773959cca24176dbe8f405e55472d748b7c549cd7920ff6abb8f1ab7db0b0f1b36de1a21c57a8ff741f4f1e792c52be + languageName: node + linkType: hard + "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2": version: 1.1.15 resolution: "which-typed-array@npm:1.1.15" @@ -9816,6 +11750,17 @@ __metadata: languageName: node linkType: hard +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a + languageName: node + linkType: hard + "wrap-ansi@npm:^8.0.1, wrap-ansi@npm:^8.1.0": version: 8.1.0 resolution: "wrap-ansi@npm:8.1.0" @@ -9849,6 +11794,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:^7.5.1": + version: 7.5.10 + resolution: "ws@npm:7.5.10" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: f9bb062abf54cc8f02d94ca86dcd349c3945d63851f5d07a3a61c2fcb755b15a88e943a63cf580cbdb5b74436d67ef6b67f745b8f7c0814e411379138e1863cb + languageName: node + linkType: hard + "ws@npm:^8.15.1, ws@npm:^8.8.1": version: 8.18.0 resolution: "ws@npm:8.18.0" @@ -9878,6 +11838,20 @@ __metadata: languageName: node linkType: hard +"xtend@npm:^4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.3 + resolution: "y18n@npm:4.0.3" + checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -9885,7 +11859,7 @@ __metadata: languageName: node linkType: hard -"yallist@npm:^4.0.0": +"yallist@npm:4.0.0, yallist@npm:^4.0.0": version: 4.0.0 resolution: "yallist@npm:4.0.0" checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 @@ -9908,6 +11882,16 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 60e8c7d1b85814594d3719300ecad4e6ae3796748b0926137bfec1f3042581b8646d67e83c6fc80a692ef08b8390f21ddcacb9464476c39bbdf52e34961dd4d9 + languageName: node + linkType: hard + "yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.9": version: 20.2.9 resolution: "yargs-parser@npm:20.2.9" @@ -9922,6 +11906,25 @@ __metadata: languageName: node linkType: hard +"yargs@npm:^15.3.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: ^6.0.0 + decamelize: ^1.2.0 + find-up: ^4.1.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^4.2.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^18.1.2 + checksum: 40b974f508d8aed28598087720e086ecd32a5fd3e945e95ea4457da04ee9bdb8bdd17fd91acff36dc5b7f0595a735929c514c40c402416bbb87c03f6fb782373 + languageName: node + linkType: hard + "yargs@npm:^16.2.0": version: 16.2.0 resolution: "yargs@npm:16.2.0" @@ -9995,3 +11998,23 @@ __metadata: checksum: 33bd5ee7017656c2ad728b5d4ba510e15bd65ce1ec180c5bbdc7a5f063256353ec482e6a2bc74de7515219d8494147924b9aae16e63fdaaf37cdf7d1ee8df125 languageName: node linkType: hard + +"zustand@npm:4.4.1": + version: 4.4.1 + resolution: "zustand@npm:4.4.1" + dependencies: + use-sync-external-store: 1.2.0 + peerDependencies: + "@types/react": ">=16.8" + immer: ">=9.0" + react: ">=16.8" + peerDependenciesMeta: + "@types/react": + optional: true + immer: + optional: true + react: + optional: true + checksum: 80acd0fbf633782996642802c8692bbb80ae5c80a8dff4c501b88250acd5ccd468fbc6398bdce198475a25e3839c91385b81da921274f33ffb5c2d08c3eab400 + languageName: node + linkType: hard