diff --git a/.github/ISSUE_TEMPLATE/addImageForm.yml b/.github/ISSUE_TEMPLATE/addImageForm.yml
index 67ceeeed..713d8c81 100644
--- a/.github/ISSUE_TEMPLATE/addImageForm.yml
+++ b/.github/ISSUE_TEMPLATE/addImageForm.yml
@@ -1,7 +1,7 @@
name: Add Image
description: Creates a request to add a token image to CoW Swap's image repository
title: "[AddImage] `SYMBOL` on `NETWORK`"
-labels: []
+labels: [addImage]
body:
- type: markdown
diff --git a/.github/ISSUE_TEMPLATE/addTokenForm.yml b/.github/ISSUE_TEMPLATE/addTokenForm.yml
index 8f2430fe..35abb6e1 100644
--- a/.github/ISSUE_TEMPLATE/addTokenForm.yml
+++ b/.github/ISSUE_TEMPLATE/addTokenForm.yml
@@ -1,7 +1,7 @@
name: Add Token
description: Creates a request to add a token to CoW Swap's default token list
title: "[AddToken] `SYMBOL` on `NETWORK`"
-labels: []
+labels: [addToken]
body:
- type: markdown
@@ -65,6 +65,7 @@ body:
- type: textarea
id: reason
attributes:
- label: Why should we add this token? How do we know it's not a scam? Does it have enough liquidity on selected chain?
+ label: Reason
+ description: Why should we add this token? How do we know it's not a scam? Does it have enough liquidity on selected chain?
validations:
required: true
diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md
new file mode 100644
index 00000000..12ffcd44
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/other.md
@@ -0,0 +1,9 @@
+---
+name: Other
+about: Describe this issue template's purpose here.
+title: ''
+assignees: ''
+
+---
+
+
diff --git a/.github/ISSUE_TEMPLATE/removeTokenForm.yml b/.github/ISSUE_TEMPLATE/removeTokenForm.yml
index 6d824e9c..28c7cc2e 100644
--- a/.github/ISSUE_TEMPLATE/removeTokenForm.yml
+++ b/.github/ISSUE_TEMPLATE/removeTokenForm.yml
@@ -1,7 +1,7 @@
name: Remove Token
description: Creates a request to remove a token from CoW Swap's default token list
title: "[RemoveToken] `SYMBOL` on `NETWORK`"
-labels: []
+labels: [removeToken]
body:
- type: markdown
@@ -36,6 +36,7 @@ body:
- type: textarea
id: reason
attributes:
- label: Why should we remove this token?
+ label: Reason
+ description: Why should we remove this token?
validations:
required: true
diff --git a/.github/workflows/executeAction.yml b/.github/workflows/executeAction.yml
new file mode 100644
index 00000000..81ab38e9
--- /dev/null
+++ b/.github/workflows/executeAction.yml
@@ -0,0 +1,102 @@
+name: ExecuteAction
+
+on:
+ workflow_call:
+ inputs:
+ issueInfo:
+ required: true
+ type: string
+ operation:
+ required: true
+ type: string
+ prTitle:
+ required: true
+ type: string
+ prBody:
+ required: true
+ type: string
+
+env:
+ IMAGES_BASE_PATH: src/public/images/
+ LIST_PATH: src/public/CowSwap.json
+
+jobs:
+ execute:
+ runs-on: ubuntu-latest
+ steps:
+
+ - name: Checkout code
+ uses: actions/checkout@v3
+
+ - name: Set BASE_PATH env var
+ run: echo "BASE_PATH=${{ env.IMAGES_BASE_PATH }}${{ fromJSON(inputs.issueInfo).chainId }}/${{ fromJSON(inputs.issueInfo).address }}/" >> "$GITHUB_ENV"
+
+ - name: Create base path and info.json if it doesn't exist
+ run: |
+ mkdir -p ${{ env.BASE_PATH }}
+ touch "${{ env.BASE_PATH }}info.json"
+
+ - name: Save input into local file
+ run: |
+ cat << EOF > data.json
+ ${{ inputs.issueInfo }}
+ EOF
+
+ # Image handling
+ - name: Download image
+ if: ${{ inputs.operation == 'addImage' || inputs.operation == 'addToken' }}
+ uses: actions/download-artifact@v3
+ with:
+ name: ${{ fromJSON(inputs.issueInfo).address }}
+
+ - name: Move image to destination
+ if: ${{ inputs.operation == 'addImage' || inputs.operation == 'addToken' }}
+ run: mv output.png ${{ env.BASE_PATH }}logo.png
+
+ - name: Update json files
+ run: python3 src/scripts/workflow_helper.py ${{ inputs.operation }} data.json
+
+ - name: Create Pull Request
+ id: cpr
+ uses: peter-evans/create-pull-request@v4
+ with:
+ commit-message: "[${{ inputs.operation }}] ${{ fromJSON(inputs.issueInfo).network }}/${{ fromJSON(inputs.issueInfo).address }}"
+ branch: ${{ inputs.operation }}/${{ fromJSON(inputs.issueInfo).chainId }}_${{ fromJSON(inputs.issueInfo).address }}
+ delete-branch: true
+ title: ${{ inputs.prTitle }}
+ body: |
+ # ${{ inputs.operation }}
+
+ **Note** This is an automated PR
+
+ Submitted by @${{ github.event.issue.user.login }}
+
+ Closes #${{ github.event.issue.number }}
+
+ ---
+
+ ${{ inputs.prBody }}
+ add-paths: |
+ ${{ env.BASE_PATH }}/*
+ ${{ env.LIST_PATH }}
+
+ - name: Comment on issue
+ uses: peter-evans/create-or-update-comment@v2
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ Your request is ready and will be reviewed by a team member.
+ You can follow the progress in the Pull Request #${{ steps.cpr.outputs.pull-request-number }}
+
+ - name: Report error
+ if: ${{ failure() }}
+ uses: peter-evans/close-issue@v2
+ with:
+ comment: |
+ Failed to ${{ inputs.operation }}
+
+ Check the input is correct and try again in a new issue
+
+ If the issue persists, create a bug report
+
+ cc @cowprotocol/frontend
\ No newline at end of file
diff --git a/.github/workflows/optimizeImage.yml b/.github/workflows/optimizeImage.yml
new file mode 100644
index 00000000..fc364009
--- /dev/null
+++ b/.github/workflows/optimizeImage.yml
@@ -0,0 +1,54 @@
+name: OptimizeImage
+
+# Input: chain, address, CID
+# Steps:
+# - resolve image/download it
+# - optimize image: 256x256, remove metadata
+# - upload new image to ipfs: name file
.png, upload it
+# - return CID
+
+on:
+ workflow_call:
+ inputs:
+ address:
+ required: true
+ type: string
+ url:
+ required: true
+ type: string
+
+jobs:
+ execute:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Download image
+ run: "curl -o image.png ${{ inputs.url }}"
+
+ - name: Install imagemagick
+ run: sudo apt install imagemagick
+
+ - name: Optimize image
+ run: "convert image.png -depth 7 -resize 256x -posterize 24 output.png"
+
+# - name: Further compress image
+# run: "??? still need to figure out how to do this without imageoptim"
+
+ - name: Upload img
+ uses: actions/upload-artifact@v3
+ with:
+ name: ${{ inputs.address }}
+ path: output.png
+ retention-days: 1
+
+ - name: Report error
+ if: ${{ failure() }}
+ uses: peter-evans/close-issue@v2
+ with:
+ comment: |
+ Failed to optimize image
+
+ Check you provided a proper image file and try again in a new issue
+
+ If the issue persists, create a bug report
+
+ cc @cowprotocol/frontend
\ No newline at end of file
diff --git a/.github/workflows/processRequest.yml b/.github/workflows/processRequest.yml
new file mode 100644
index 00000000..69fc3ad7
--- /dev/null
+++ b/.github/workflows/processRequest.yml
@@ -0,0 +1,222 @@
+name: ProcessRequest
+
+# Flow
+# Extract info from issue (did not find a way to get it nicely)
+# Validate all info is present
+# On validation failure, comment on issue with reason for failure
+# [Optional] Optimize image
+# Create PR with required info
+# [Optional] Modify CowSwap.json list
+# [Optional] Add image to src/public/network/address/logo
+# [Optional] Add/Update info to src/public/network/address/info
+# Link Issue to PR
+# Add reviewers
+# [Optional] Notify on slack
+# Comment on original issue
+
+# Running locally with `act`
+# Get the `event.json` from a GH action such as https://github.com/cowprotocol/token-lists/actions/runs/4251878894/jobs/7394780076
+# ACTIONS_RUNTIME_URL=http://host.docker.internal:34567/ act -s GITHUB_TOKEN=$(gh auth token) issues -e event.json -W .github/workflows/processRequest.yml --artifact-server-path /tmp/artifacts --artifact-server-addr "[::0]" -v
+# Some of the additional workarounds are required for running artifact uploading on Mac M1s locally. See https://github.com/nektos/act/issues/329
+
+on:
+ issues:
+ types: [opened]
+
+env:
+ # Matches labels from field forms to extract data
+ FIELD_NAMES: 'Network,Symbol,Name,URL,Decimals,Address,Reason'
+ IMAGES_BASE_PATH: src/public/images/
+ LIST_PATH: src/public/CowSwap.json
+
+jobs:
+ printContext:
+ runs-on: ubuntu-latest
+ steps:
+ - env:
+ EVENT_CONTEXT: ${{ toJSON(github.event) }}
+ run: |
+ echo $EVENT_CONTEXT
+
+ extractInfoFromIssue:
+ runs-on: ubuntu-latest
+ if: contains(github.event.issue.labels.*.name, 'addImage') || contains(github.event.issue.labels.*.name, 'addToken') || contains(github.event.issue.labels.*.name, 'removeToken')
+ outputs:
+ issueInfo: ${{ steps.extractInfo.outputs.result }}
+ steps:
+ - name: Give feedback to issue creator
+ uses: peter-evans/create-or-update-comment@v2
+ if: ${{ !env.ACT }} # skip during local actions testing https://github.com/nektos/act#skipping-jobs
+ with:
+ issue-number: ${{ github.event.issue.number }}
+ body: |
+ Your request has been received and is being processed.
+
+ This issue will be updated when completed.
+
+ - name: Extract info
+ id: extractInfo
+ uses: actions/github-script@v6
+ with:
+ # Using JS, build a new comment body
+ script: |
+ const body = context.payload.issue.body
+
+ const fieldNames = `${ process.env.FIELD_NAMES }`.split(',')
+
+ // Extract the values for each field - if it exists - based on their labels from the issue body
+ const values = fieldNames.reduce((acc, f) => {
+ // Create a regex for each field, with capturing group with the same name
+ const r = new RegExp(String.raw`${f}\s+(?<${f.toLowerCase()}>.*?)(\s+###|$)`, 's')
+
+ // Build an object with the capturing group and value for each field
+ return {...acc, ...body.match(r)?.groups}
+ }, {})
+
+ if (values.network === 'MAINNET') {
+ values.chainId = 1
+ values.blockExplorer = 'etherscan'
+ } else {
+ values.chainId = 100
+ values.blockExplorer = 'gnosisscan'
+ }
+
+ // Used only in the PR context for displaying it
+ values.prImageUrl = `https://raw.githubusercontent.com/cowprotocol/token-lists/{0}/${ values.chainId }_${ values.address }/src/public/images/${ values.chainId }/${ values.address }/logo.png`
+ // Will be the final URL once it's merged to `main`
+ values.logoURI = `https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/${ values.chainId }/${ values.address }/logo.png`
+
+
+ // Return a string
+ return JSON.stringify(values)
+ result-encoding: string
+
+ - name: Debug
+ run: |
+ cat << EOF
+ ${{ steps.extractInfo.outputs.result }}
+ EOF
+
+ # force failure for testing
+ # exit 1
+
+
+ validateInput:
+ runs-on: ubuntu-latest
+ needs: extractInfoFromIssue
+ env:
+ # De-normalizing for easier access
+ NETWORK: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}
+ SYMBOL: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).symbol }}
+ NAME: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).name }}
+ URL: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).url }}
+ DECIMALS: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).decimals }}
+ ADDRESS: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}
+ REASON: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).reason }}
+
+ steps:
+ - name: Validate addImage
+ if: contains(github.event.issue.labels.*.name, 'addImage') && (!env.NETWORK || !env.URL || !env.ADDRESS)
+ run: |
+ echo "::error title={Validation failed}::{Missing required fields for adding an image}"
+ exit 1
+ - name: Validate addToken
+ if: contains(github.event.issue.labels.*.name, 'addToken') && (!env.NETWORK|| !env.SYMBOL|| !env.NAME|| !env.URL|| !env.DECIMALS|| !env.ADDRESS|| !env.REASON)
+ run: |
+ echo "${{ env.NETWORK }} ${{ env.URL }} ${{ env.ADDRESS }}"
+ echo "::error title={Validation failed}::{Missing required fields for adding a token}"
+ exit 1
+ - name: Validate removeToken
+ if: contains(github.event.issue.labels.*.name, 'removeToken') && (!env.NETWORK || !env.REASON || !env.ADDRESS)
+ run: |
+ echo "${{ env.NETWORK }} ${{ env.URL }} ${{ env.ADDRESS }}"
+ echo "::error title={Validation failed}::{Missing required fields for removing a token}"
+ exit 1
+ - name: Report error
+ if: ${{ failure() }}
+ uses: peter-evans/close-issue@v2
+ with:
+ comment: |
+ Invalid request
+
+ Make sure all the required fields are provided and submit a new issue
+
+ optimizeImage:
+ needs: [extractInfoFromIssue, validateInput]
+ uses: ./.github/workflows/optimizeImage.yml
+ if: ${{ contains(github.event.issue.labels.*.name, 'addImage') || contains(github.event.issue.labels.*.name, 'addToken') }}
+ with:
+ url: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).url }}
+ address: ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}
+
+ addToken:
+ needs: [ extractInfoFromIssue, optimizeImage ]
+ uses: ./.github/workflows/executeAction.yml
+ if: ${{ contains(github.event.issue.labels.*.name, 'addToken') }}
+ secrets: inherit
+ with:
+ # Same for all
+ issueInfo: ${{ needs.extractInfoFromIssue.outputs.issueInfo }}
+ # Custom per type
+ operation: addToken
+ prTitle: "[addToken] `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).symbol }}` to `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`"
+ prBody: |
+ Adding token `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).symbol }}` on network `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`
+
+ *Address*: `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}`
+
+ [Link to block explorer ↗︎](https://${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).blockExplorer }}.io/token/${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }})
+
+ | Description | Image |
+ |-|-|
+ | Original | .url }}) |
+ | Optimized | .prImageUrl, 'addToken') }}) |
+
+ ### Reason
+
+ ```
+ ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).reason }}
+ ```
+
+ removeToken:
+ needs: [ extractInfoFromIssue, validateInput ]
+ uses: ./.github/workflows/executeAction.yml
+ if: ${{ contains(github.event.issue.labels.*.name, 'removeToken') }}
+ secrets: inherit
+ with:
+ issueInfo: ${{ needs.extractInfoFromIssue.outputs.issueInfo }}
+ operation: removeToken
+ prTitle: "[removeToken] `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}` from `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`"
+ prBody: |
+ Removing token from network `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`
+
+ *Address*: `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}`
+
+ [Link to block explorer ↗︎](https://${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).blockExplorer }}.io/token/${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }})
+
+ ### Reason
+
+ ```
+ ${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).reason }}
+ ```
+
+ addImage:
+ needs: [ extractInfoFromIssue, optimizeImage ]
+ uses: ./.github/workflows/executeAction.yml
+ if: ${{ contains(github.event.issue.labels.*.name, 'addImage') }}
+ secrets: inherit
+ with:
+ issueInfo: ${{ needs.extractInfoFromIssue.outputs.issueInfo }}
+ operation: addImage
+ prTitle: "[addImage] `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}` to `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`"
+ prBody: |
+ Adding image to network `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).network }}`
+
+ *Address*: `${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }}`
+
+ [Link to block explorer ↗︎](https://${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).blockExplorer }}.io/token/${{ fromJSON(needs.extractInfoFromIssue.outputs.issueInfo).address }})
+
+ | Description | Image |
+ |-|-|
+ | Original | .url }}) |
+ | Optimized | .prImageUrl, 'addImage') }}) |
diff --git a/README.md b/README.md
index 86350333..66bf98dc 100644
--- a/README.md
+++ b/README.md
@@ -1,21 +1,55 @@
# Token Lists
-Automatically generate Token Lists
+CoW Swap default token lists and token image repository
-## How to add an image to the CoW Swap default token list
+## Managing the tokens
-In order to add a new token to the CoW Swap default token list follow these steps
+The process has been automated, and it's now much simpler.
+The forms are self-explanatory and should contain all the info you need to proceed.
-- Find an icon with reasonable quality/size (256px, <100kB).
-- Add the icon to `src/public/images//.png` [^1]
-- Upload the image to IPFS (https://www.pinata.cloud/ is a simple recommended service to do that)
-- Create a new entry in `src/public/CowSwap.json` containing token address, symbol, etc. (**use IPFS link for icon!**)
-- Make sure you bump the version using [SemVersions](https://github.com/Uniswap/token-lists#semantic-versioning)
-- Create a PR with these changes
+**Notes**:
+- Images will be optimized in the background
+- If you want to add a token/image to multiple networks, create one issue per network
-[^1]: To resize/convert your image [ImageMagick](https://formulae.brew.sh/formula/imagemagick) installed you can simply run `convert ~/Downloads/img.png -resize 256 src/public/images//.png`
+Head to the [issues section](https://github.com/cowprotocol/token-lists/issues/new/choose) and pick your action:
-## Setup
+### Add or update token
+
+For adding tokens to CoW Swap's default token list, or to update an existing one, use the [`Add Token` form](https://github.com/cowprotocol/token-lists/issues/new?assignees=&labels=addToken&template=addTokenForm.yml&title=%5BAddToken%5D+%60SYMBOL%60+on+%60NETWORK%60).
+
+### Remove token from the list
+
+Use the [`Remove Token` form](https://github.com/cowprotocol/token-lists/issues/new?assignees=&labels=removeToken&template=removeTokenForm.yml&title=%5BRemoveToken%5D+%60SYMBOL%60+on+%60NETWORK%60).
+
+Even though the token is removed from the default list, its image will be kept.
+
+### Add or update image only
+
+Not all tokens should be in the default token list, but the more token images we have the better UX.
+
+For this, use the [`Add Image` form](https://github.com/cowprotocol/token-lists/issues/new?assignees=&labels=addImage&template=addImageForm.yml&title=%5BAddImage%5D+%60SYMBOL%60+on+%60NETWORK%60).
+
+
+### Flow overview
+```mermaid
+
+flowchart TD
+ Start(User: Picks form) --> UserFillsForm(User: Fills in form and creates issue)
+ UserFillsForm --> |Form ok| ImageProcessed("Automated: [Optional] Optimize image")
+ ImageProcessed --> PRCreated(Automated: Creates Pull Request)
+ ImageProcessed --> |Failed to process image| AutomatedIssueClosure
+ PRCreated --> TeamReview(Team: Reviews Pull Request)
+ UserFillsForm --> |Form invalid| AutomatedIssueClosure(Automated: Closes issue)
+ TeamReview --> |Request approved| TeamMergesPR(Team: Merges Pull Request)
+ TeamReview --> |Request rejected| TeamClosesPR(Team: Closes Pull Request and Issue)
+
+```
+
+## Development
+
+Instructions for setting up and running the various scripts locally
+
+### Setup
```bash
# Install dependencies
@@ -25,7 +59,7 @@ yarn
yarn coingecko
```
-## Download images
+### Download images
There's a script that will fetch all images form the CowSwap list and store them in `src/public/images//.png`
diff --git a/src/public/CowSwap.json b/src/public/CowSwap.json
index c574d0f9..0f97c039 100644
--- a/src/public/CowSwap.json
+++ b/src/public/CowSwap.json
@@ -556,6 +556,38 @@
"decimals": 18,
"chainId": 1,
"logoURI": "https://gateway.pinata.cloud/ipfs/QmQqhbpWjQhw2i4DoLgcpRFfoNYrvfx1yuCjszKH8YCAon"
+ },
+ {
+ "address": "0xfcf8eda095e37a41e002e266daad7efc1579bc0a",
+ "symbol": "FLEX",
+ "name": "Flex Coin",
+ "decimals": 18,
+ "chainId": 1,
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/logo.png"
+ },
+ {
+ "address": "0x19062190b1925b5b6689d7073fdfc8c2976ef8cb",
+ "symbol": "BZZ",
+ "name": "Swarm",
+ "decimals": 16,
+ "chainId": 1,
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/logo.png"
+ },
+ {
+ "address": "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb",
+ "symbol": "ankrETH",
+ "name": "Ankr Staked ETH",
+ "decimals": 18,
+ "chainId": 1,
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/logo.png"
+ },
+ {
+ "address": "0xb50721bcf8d664c30412cfbc6cf7a15145234ad1",
+ "symbol": "ARB",
+ "name": "Arbitrum Token",
+ "decimals": 18,
+ "chainId": 1,
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/logo.png"
}
]
}
diff --git a/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6.png b/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6.png
deleted file mode 100644
index 1f00fc65..00000000
Binary files a/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6.png and /dev/null differ
diff --git a/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/info.json b/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/logo.png b/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/logo.png
new file mode 100644
index 00000000..021f99d4
Binary files /dev/null and b/src/public/images/1/0x090185f2135308bad17527004364ebcc2d37e5f6/logo.png differ
diff --git a/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6.png b/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6.png
deleted file mode 100644
index 8ca9b028..00000000
Binary files a/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6.png and /dev/null differ
diff --git a/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/info.json b/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/logo.png b/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/logo.png
new file mode 100644
index 00000000..15548f4d
Binary files /dev/null and b/src/public/images/1/0x0ae055097c6d159879521c384f1d2123d1f195e6/logo.png differ
diff --git a/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b.png b/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b.png
deleted file mode 100644
index 06766d48..00000000
Binary files a/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b.png and /dev/null differ
diff --git a/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/info.json b/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/logo.png b/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/logo.png
new file mode 100644
index 00000000..1d0ce3b8
Binary files /dev/null and b/src/public/images/1/0x0b498ff89709d3838a063f1dfa463091f9801c2b/logo.png differ
diff --git a/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.png b/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.png
deleted file mode 100644
index 283a4abf..00000000
Binary files a/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.png and /dev/null differ
diff --git a/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/info.json b/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/logo.png b/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/logo.png
new file mode 100644
index 00000000..b6f99b24
Binary files /dev/null and b/src/public/images/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e/logo.png differ
diff --git a/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.png b/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.png
deleted file mode 100644
index 8c5bb601..00000000
Binary files a/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.png and /dev/null differ
diff --git a/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/info.json b/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/logo.png b/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/logo.png
new file mode 100644
index 00000000..9f4ab64c
Binary files /dev/null and b/src/public/images/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde/logo.png differ
diff --git a/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29.png b/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29.png
deleted file mode 100644
index 2649ed90..00000000
Binary files a/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29.png and /dev/null differ
diff --git a/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/info.json b/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/logo.png b/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/logo.png
new file mode 100644
index 00000000..bd9e4ce0
Binary files /dev/null and b/src/public/images/1/0x0f2d719407fdbeff09d87557abb7232601fd9f29/logo.png differ
diff --git a/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302.png b/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302.png
deleted file mode 100644
index add8884e..00000000
Binary files a/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302.png and /dev/null differ
diff --git a/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/info.json b/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/logo.png b/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/logo.png
new file mode 100644
index 00000000..5bd7a904
Binary files /dev/null and b/src/public/images/1/0x111111111117dc0aa78b770fa6a738034120c302/logo.png differ
diff --git a/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b.png b/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b.png
deleted file mode 100644
index 33dcb749..00000000
Binary files a/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b.png and /dev/null differ
diff --git a/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/info.json b/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/logo.png b/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/logo.png
new file mode 100644
index 00000000..7fd065b8
Binary files /dev/null and b/src/public/images/1/0x1494ca1f11d487c2bbe4543e90080aeba4ba3c2b/logo.png differ
diff --git a/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559.png b/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559.png
deleted file mode 100644
index 427a73a7..00000000
Binary files a/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559.png and /dev/null differ
diff --git a/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/info.json b/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/logo.png b/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/logo.png
new file mode 100644
index 00000000..32ff5c76
Binary files /dev/null and b/src/public/images/1/0x1559fa1b8f28238fd5d76d9f434ad86fd20d1559/logo.png differ
diff --git a/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/info.json b/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/info.json
new file mode 100644
index 00000000..ed390cc4
--- /dev/null
+++ b/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/info.json
@@ -0,0 +1,10 @@
+{
+ "removed": false,
+ "address": "0x19062190b1925b5b6689d7073fdfc8c2976ef8cb",
+ "symbol": "BZZ",
+ "name": "Swarm",
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/logo.png",
+ "reason": "The BZZ token provides users with access to data relay and storage services, and compensates node operators for these services.\r\n\r\nIt is the native token that powers Swarm, a peer-to-peer network of nodes that collectively provide a decentralised storage and communication service. This system is economically self-sustaining due to a built-in incentive system which is enforced through smart contracts on the Ethereum blockchain.\r\n\r\nhttps://www.coingecko.com/en/coins/swarm#markets\r\nhttps://coinmarketcap.com/currencies/ethereum-swarm/markets/\r\nhttps://tokens.kleros.io/token/0xe6747460d9316d7689ad3916ec72ab3cdaef24bcf3512b247b1ebd1026c4220f\r\n\r\nSeveral audits from Quantstamp, Least Authority and Cure53 were performed before launch. I can provide the information upon request.",
+ "decimals": 16,
+ "chainId": 1
+}
\ No newline at end of file
diff --git a/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/logo.png b/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/logo.png
new file mode 100644
index 00000000..d3a192d5
Binary files /dev/null and b/src/public/images/1/0x19062190B1925b5b6689D7073fDfC8c2976EF8Cb/logo.png differ
diff --git a/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44.png b/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44.png
deleted file mode 100644
index cfc50ca0..00000000
Binary files a/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44.png and /dev/null differ
diff --git a/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/info.json b/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/logo.png b/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/logo.png
new file mode 100644
index 00000000..b753ab31
Binary files /dev/null and b/src/public/images/1/0x1ceb5cb57c4d4e2b2433641b95dd330a33185a44/logo.png differ
diff --git a/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.png b/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.png
deleted file mode 100644
index 40fef279..00000000
Binary files a/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.png and /dev/null differ
diff --git a/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/info.json b/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/logo.png b/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/logo.png
new file mode 100644
index 00000000..84e90c1b
Binary files /dev/null and b/src/public/images/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984/logo.png differ
diff --git a/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.png b/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.png
deleted file mode 100644
index 03a512a6..00000000
Binary files a/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.png and /dev/null differ
diff --git a/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/info.json b/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/logo.png b/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/logo.png
new file mode 100644
index 00000000..03e25670
Binary files /dev/null and b/src/public/images/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599/logo.png differ
diff --git a/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6.png b/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6.png
deleted file mode 100644
index c6a238ab..00000000
Binary files a/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6.png and /dev/null differ
diff --git a/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/info.json b/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/logo.png b/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/logo.png
new file mode 100644
index 00000000..15a62317
Binary files /dev/null and b/src/public/images/1/0x2af1df3ab0ab157e1e2ad8f88a7d04fbea0c7dc6/logo.png differ
diff --git a/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.png b/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.png
deleted file mode 100644
index d2972db7..00000000
Binary files a/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.png and /dev/null differ
diff --git a/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/info.json b/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/logo.png b/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/logo.png
new file mode 100644
index 00000000..204a3269
Binary files /dev/null and b/src/public/images/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39/logo.png differ
diff --git a/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94.png b/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94.png
deleted file mode 100644
index 1fa1ddfd..00000000
Binary files a/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94.png and /dev/null differ
diff --git a/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/info.json b/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/logo.png b/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/logo.png
new file mode 100644
index 00000000..d80ac1a8
Binary files /dev/null and b/src/public/images/1/0x2e9d63788249371f1dfc918a52f8d799f4a38c94/logo.png differ
diff --git a/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE.png b/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE.png
deleted file mode 100644
index 709e5450..00000000
Binary files a/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE.png and /dev/null differ
diff --git a/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/info.json b/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/logo.png b/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/logo.png
new file mode 100644
index 00000000..b2b1b30e
Binary files /dev/null and b/src/public/images/1/0x341c05c0E9b33C0E38d64de76516b2Ce970bB3BE/logo.png differ
diff --git a/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.png b/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.png
deleted file mode 100644
index e8809d47..00000000
Binary files a/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.png and /dev/null differ
diff --git a/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/info.json b/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/logo.png b/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/logo.png
new file mode 100644
index 00000000..cad5de9a
Binary files /dev/null and b/src/public/images/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0/logo.png differ
diff --git a/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d.png b/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d.png
deleted file mode 100644
index 9c6ee913..00000000
Binary files a/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d.png and /dev/null differ
diff --git a/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/info.json b/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/logo.png b/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/logo.png
new file mode 100644
index 00000000..ae568534
Binary files /dev/null and b/src/public/images/1/0x3472a5a71965499acd81997a54bba8d852c6e53d/logo.png differ
diff --git a/src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e/info.json b/src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e.png b/src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e/logo.png
similarity index 100%
rename from src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e.png
rename to src/public/images/1/0x36c833Eed0D376f75D1ff9dFDeE260191336065e/logo.png
diff --git a/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899.png b/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899.png
deleted file mode 100644
index d4c9627a..00000000
--- a/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899.png
+++ /dev/null
@@ -1 +0,0 @@
-{"statusCode":500,"message":"Internal server error"}
\ No newline at end of file
diff --git a/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/info.json b/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/logo.png b/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/logo.png
new file mode 100644
index 00000000..2a812962
Binary files /dev/null and b/src/public/images/1/0x383518188c0c6d7730d91b2c03a03c837814a899/logo.png differ
diff --git a/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.png b/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.png
deleted file mode 100644
index bbae2198..00000000
Binary files a/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.png and /dev/null differ
diff --git a/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/info.json b/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/logo.png b/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/logo.png
new file mode 100644
index 00000000..6cf072c7
Binary files /dev/null and b/src/public/images/1/0x3845badade8e6dff049820680d1f14bd3903a5d0/logo.png differ
diff --git a/src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F/info.json b/src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F.png b/src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F/logo.png
similarity index 100%
rename from src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F.png
rename to src/public/images/1/0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F/logo.png
diff --git a/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.png b/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.png
deleted file mode 100644
index b6125c66..00000000
Binary files a/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.png and /dev/null differ
diff --git a/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/info.json b/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/logo.png b/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/logo.png
new file mode 100644
index 00000000..7aa40823
Binary files /dev/null and b/src/public/images/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870/logo.png differ
diff --git a/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.png b/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.png
deleted file mode 100644
index 1411d755..00000000
Binary files a/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.png and /dev/null differ
diff --git a/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/info.json b/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/logo.png b/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/logo.png
new file mode 100644
index 00000000..ac7fea6e
Binary files /dev/null and b/src/public/images/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b/logo.png differ
diff --git a/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca.png b/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca.png
deleted file mode 100644
index 7995d943..00000000
Binary files a/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca.png and /dev/null differ
diff --git a/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/info.json b/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/logo.png b/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/logo.png
new file mode 100644
index 00000000..a1b9cef0
Binary files /dev/null and b/src/public/images/1/0x514910771af9ca656af840dff83e8264ecf986ca/logo.png differ
diff --git a/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.png b/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.png
deleted file mode 100644
index 4fab497d..00000000
Binary files a/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.png and /dev/null differ
diff --git a/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/info.json b/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/logo.png b/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/logo.png
new file mode 100644
index 00000000..2efa1dd5
Binary files /dev/null and b/src/public/images/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32/logo.png differ
diff --git a/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.png b/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.png
deleted file mode 100644
index 04849374..00000000
Binary files a/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.png and /dev/null differ
diff --git a/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/info.json b/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/logo.png b/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/logo.png
new file mode 100644
index 00000000..4bceba21
Binary files /dev/null and b/src/public/images/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0/logo.png differ
diff --git a/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.png b/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.png
deleted file mode 100644
index d4c9627a..00000000
--- a/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.png
+++ /dev/null
@@ -1 +0,0 @@
-{"statusCode":500,"message":"Internal server error"}
\ No newline at end of file
diff --git a/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/info.json b/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/logo.png b/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/logo.png
new file mode 100644
index 00000000..a381af65
Binary files /dev/null and b/src/public/images/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b/logo.png differ
diff --git a/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d.png b/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d.png
deleted file mode 100644
index c85f983c..00000000
Binary files a/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d.png and /dev/null differ
diff --git a/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/info.json b/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/logo.png b/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/logo.png
new file mode 100644
index 00000000..46a33891
Binary files /dev/null and b/src/public/images/1/0x616e8BfA43F920657B3497DBf40D6b1A02D4608d/logo.png differ
diff --git a/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.png b/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.png
deleted file mode 100644
index 00e6ede8..00000000
Binary files a/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.png and /dev/null differ
diff --git a/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/info.json b/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/logo.png b/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/logo.png
new file mode 100644
index 00000000..9598e2e5
Binary files /dev/null and b/src/public/images/1/0x6243d8cea23066d098a15582d81a598b4e8391f4/logo.png differ
diff --git a/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/info.json b/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/logo.png b/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/logo.png
new file mode 100644
index 00000000..2a812962
Binary files /dev/null and b/src/public/images/1/0x64aa3364F17a4D01c6f1751Fd97C2BD3D7e7f1D5/logo.png differ
diff --git a/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.png b/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.png
deleted file mode 100644
index 98d175cd..00000000
Binary files a/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.png and /dev/null differ
diff --git a/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/info.json b/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/logo.png b/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/logo.png
new file mode 100644
index 00000000..75f4924c
Binary files /dev/null and b/src/public/images/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0/logo.png differ
diff --git a/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96.png b/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96.png
deleted file mode 100644
index 6cc49608..00000000
Binary files a/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96.png and /dev/null differ
diff --git a/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/info.json b/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/logo.png b/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/logo.png
new file mode 100644
index 00000000..e24b00de
Binary files /dev/null and b/src/public/images/1/0x6810e776880c02933d47db1b9fc05908e5386b96/logo.png differ
diff --git a/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f.png b/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f.png
deleted file mode 100644
index b18280d4..00000000
Binary files a/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f.png and /dev/null differ
diff --git a/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/info.json b/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/logo.png b/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/logo.png
new file mode 100644
index 00000000..ebb78f82
Binary files /dev/null and b/src/public/images/1/0x6b175474e89094c44da98b954eedeac495271d0f/logo.png differ
diff --git a/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.png b/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.png
deleted file mode 100644
index d34ba93e..00000000
Binary files a/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.png and /dev/null differ
diff --git a/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/info.json b/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/logo.png b/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/logo.png
new file mode 100644
index 00000000..478a2069
Binary files /dev/null and b/src/public/images/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2/logo.png differ
diff --git a/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d.png b/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d.png
deleted file mode 100644
index f1e0ccee..00000000
Binary files a/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d.png and /dev/null differ
diff --git a/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/info.json b/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/logo.png b/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/logo.png
new file mode 100644
index 00000000..2e2f5bbb
Binary files /dev/null and b/src/public/images/1/0x6dea81c8171d0ba574754ef6f8b412f2ed88c54d/logo.png differ
diff --git a/src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7/info.json b/src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7.png b/src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7/logo.png
similarity index 100%
rename from src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7.png
rename to src/public/images/1/0x72e364f2abdc788b7e918bc238b21f109cd634d7/logo.png
diff --git a/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84.png b/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84.png
deleted file mode 100644
index 0f3d0d1a..00000000
Binary files a/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84.png and /dev/null differ
diff --git a/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/info.json b/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/logo.png b/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/logo.png
new file mode 100644
index 00000000..b2707c86
Binary files /dev/null and b/src/public/images/1/0x7C07F7aBe10CE8e33DC6C5aD68FE033085256A84/logo.png differ
diff --git a/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.png b/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.png
deleted file mode 100644
index 20384b42..00000000
Binary files a/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.png and /dev/null differ
diff --git a/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/info.json b/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/logo.png b/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/logo.png
new file mode 100644
index 00000000..4c8a061d
Binary files /dev/null and b/src/public/images/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0/logo.png differ
diff --git a/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.png b/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.png
deleted file mode 100644
index f9c0d9e6..00000000
Binary files a/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.png and /dev/null differ
diff --git a/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/info.json b/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/logo.png b/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/logo.png
new file mode 100644
index 00000000..4f57ed61
Binary files /dev/null and b/src/public/images/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9/logo.png differ
diff --git a/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e.png b/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e.png
deleted file mode 100644
index 4858bb9a..00000000
Binary files a/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e.png and /dev/null differ
diff --git a/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/info.json b/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/logo.png b/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/logo.png
new file mode 100644
index 00000000..84304476
Binary files /dev/null and b/src/public/images/1/0x853d955acef822db058eb8505911ed77f175b99e/logo.png differ
diff --git a/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab.png b/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab.png
deleted file mode 100644
index d4c9627a..00000000
--- a/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab.png
+++ /dev/null
@@ -1 +0,0 @@
-{"statusCode":500,"message":"Internal server error"}
\ No newline at end of file
diff --git a/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/info.json b/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/logo.png b/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/logo.png
new file mode 100644
index 00000000..f2065783
Binary files /dev/null and b/src/public/images/1/0x88acdd2a6425c3faae4bc9650fd7e27e0bebb7ab/logo.png differ
diff --git a/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0.png b/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0.png
deleted file mode 100644
index c92f0dd8..00000000
Binary files a/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0.png and /dev/null differ
diff --git a/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/info.json b/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/logo.png b/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/logo.png
new file mode 100644
index 00000000..b685607b
Binary files /dev/null and b/src/public/images/1/0x900db999074d9277c5da2a43f252d74366230da0/logo.png differ
diff --git a/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca.png b/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca.png
deleted file mode 100644
index 11080880..00000000
Binary files a/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca.png and /dev/null differ
diff --git a/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/info.json b/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/logo.png b/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/logo.png
new file mode 100644
index 00000000..b51fda20
Binary files /dev/null and b/src/public/images/1/0x956f47f50a910163d8bf957cf5846d573e7f87ca/logo.png differ
diff --git a/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.png b/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.png
deleted file mode 100644
index 3e277723..00000000
Binary files a/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.png and /dev/null differ
diff --git a/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/info.json b/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/logo.png b/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/logo.png
new file mode 100644
index 00000000..9054bf38
Binary files /dev/null and b/src/public/images/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce/logo.png differ
diff --git a/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c.png b/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c.png
deleted file mode 100644
index c9e649f6..00000000
Binary files a/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c.png and /dev/null differ
diff --git a/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/info.json b/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/logo.png b/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/logo.png
new file mode 100644
index 00000000..a0ea20fa
Binary files /dev/null and b/src/public/images/1/0x990f341946a3fdb507ae7e52d17851b87168017c/logo.png differ
diff --git a/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.png b/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.png
deleted file mode 100644
index cc2dc3e5..00000000
Binary files a/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.png and /dev/null differ
diff --git a/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/info.json b/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/logo.png b/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/logo.png
new file mode 100644
index 00000000..6b1a5efd
Binary files /dev/null and b/src/public/images/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3/logo.png differ
diff --git a/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/info.json b/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/info.json
new file mode 100644
index 00000000..92502bf1
--- /dev/null
+++ b/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/info.json
@@ -0,0 +1,10 @@
+{
+ "removed": false,
+ "address": "0xb50721bcf8d664c30412cfbc6cf7a15145234ad1",
+ "symbol": "ARB",
+ "name": "Arbitrum Token",
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/logo.png",
+ "reason": "This PR invalidates #PR125 and replaces it with a better logo. \r\n\r\nArbitrum Foundation finally rolled out a token (https://twitter.com/arbitrum/status/1636362096714690562?s=20). For this, I think it makes sense to have it ready for launch so that users can seamlessly trade the token without having to import it. From the documentation, I have been able to find that this is all the info relating the token:\r\n\r\nhttps://docs.arbitrum.foundation/airdrop-eligibility-distribution\r\nhttps://docs.arbitrum.foundation/deployment-addresses\r\nhttps://etherscan.io/token/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1",
+ "decimals": 18,
+ "chainId": 1
+}
\ No newline at end of file
diff --git a/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/logo.png b/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/logo.png
new file mode 100644
index 00000000..68ddb657
Binary files /dev/null and b/src/public/images/1/0xB50721BCf8d664c30412Cfbc6cf7a15145234ad1/logo.png differ
diff --git a/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF.png b/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF.png
deleted file mode 100644
index f251fe03..00000000
Binary files a/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF.png and /dev/null differ
diff --git a/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/info.json b/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/logo.png b/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/logo.png
new file mode 100644
index 00000000..37ce3553
Binary files /dev/null and b/src/public/images/1/0xC0c293ce456fF0ED870ADd98a0828Dd4d2903DBF/logo.png differ
diff --git a/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB.png b/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB.png
deleted file mode 100644
index d8330038..00000000
Binary files a/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB.png and /dev/null differ
diff --git a/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/info.json b/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/logo.png b/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/logo.png
new file mode 100644
index 00000000..5a8c4a17
Binary files /dev/null and b/src/public/images/1/0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB/logo.png differ
diff --git a/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/info.json b/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/info.json
new file mode 100644
index 00000000..94692471
--- /dev/null
+++ b/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/info.json
@@ -0,0 +1,10 @@
+{
+ "removed": false,
+ "address": "0xe95a203b1a91a908f9b9ce46459d101078c2c3cb",
+ "symbol": "ankrETH",
+ "name": "Ankr Staked ETH",
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/logo.png",
+ "reason": "Ankr has rebranded all of its aXXXc tokens to ankrXXX. Below information\r\nhttps://www.ankr.com/docs/liquid-staking/eth/overview/",
+ "decimals": 18,
+ "chainId": 1
+}
\ No newline at end of file
diff --git a/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/logo.png b/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/logo.png
new file mode 100644
index 00000000..a6c55584
Binary files /dev/null and b/src/public/images/1/0xE95A203B1a91a908F9B9CE46459d101078c2c3cb/logo.png differ
diff --git a/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png b/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png
deleted file mode 100644
index c4297157..00000000
Binary files a/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png and /dev/null differ
diff --git a/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/info.json b/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/logo.png b/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/logo.png
new file mode 100644
index 00000000..0174cf08
Binary files /dev/null and b/src/public/images/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/logo.png differ
diff --git a/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd.png b/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd.png
deleted file mode 100644
index 95be97aa..00000000
Binary files a/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd.png and /dev/null differ
diff --git a/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/info.json b/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/logo.png b/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/logo.png
new file mode 100644
index 00000000..7c755f2b
Binary files /dev/null and b/src/public/images/1/0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd/logo.png differ
diff --git a/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d.png b/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d.png
deleted file mode 100644
index 89a7d965..00000000
Binary files a/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d.png and /dev/null differ
diff --git a/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/info.json b/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/logo.png b/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/logo.png
new file mode 100644
index 00000000..94342495
Binary files /dev/null and b/src/public/images/1/0xba100000625a3754423978a60c9317c58a424e3d/logo.png differ
diff --git a/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9.png b/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9.png
deleted file mode 100644
index c27f5086..00000000
Binary files a/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9.png and /dev/null differ
diff --git a/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/info.json b/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/logo.png b/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/logo.png
new file mode 100644
index 00000000..07f28878
Binary files /dev/null and b/src/public/images/1/0xbc6da0fe9ad5f3b0d58160288917aa56653660e9/logo.png differ
diff --git a/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.png b/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.png
deleted file mode 100644
index b9b8789e..00000000
Binary files a/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.png and /dev/null differ
diff --git a/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/info.json b/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/logo.png b/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/logo.png
new file mode 100644
index 00000000..732eef3e
Binary files /dev/null and b/src/public/images/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f/logo.png differ
diff --git a/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png b/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png
deleted file mode 100644
index 3419eb17..00000000
Binary files a/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png and /dev/null differ
diff --git a/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/info.json b/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png b/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png
new file mode 100644
index 00000000..a6c68970
Binary files /dev/null and b/src/public/images/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/logo.png differ
diff --git a/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.png b/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.png
deleted file mode 100644
index e64f8d16..00000000
Binary files a/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.png and /dev/null differ
diff --git a/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/info.json b/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/logo.png b/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/logo.png
new file mode 100644
index 00000000..8188426f
Binary files /dev/null and b/src/public/images/1/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc/logo.png differ
diff --git a/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da.png b/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da.png
deleted file mode 100644
index bd14a0ec..00000000
Binary files a/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da.png and /dev/null differ
diff --git a/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/info.json b/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/logo.png b/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/logo.png
new file mode 100644
index 00000000..dec8297e
Binary files /dev/null and b/src/public/images/1/0xc55126051B22eBb829D00368f4B12Bde432de5Da/logo.png differ
diff --git a/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b.png b/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b.png
deleted file mode 100644
index 6ef78656..00000000
Binary files a/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b.png and /dev/null differ
diff --git a/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/info.json b/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/logo.png b/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/logo.png
new file mode 100644
index 00000000..3e432671
Binary files /dev/null and b/src/public/images/1/0xc7283b66eb1eb5fb86327f08e1b5816b0720212b/logo.png differ
diff --git a/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921.png b/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921.png
deleted file mode 100644
index f93c4149..00000000
Binary files a/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921.png and /dev/null differ
diff --git a/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/info.json b/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/logo.png b/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/logo.png
new file mode 100644
index 00000000..6221360a
Binary files /dev/null and b/src/public/images/1/0xd084944d3c05cd115c09d072b9f44ba3e0e45921/logo.png differ
diff --git a/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161.png b/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161.png
deleted file mode 100644
index d30162b7..00000000
Binary files a/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161.png and /dev/null differ
diff --git a/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/info.json b/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/logo.png b/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/logo.png
new file mode 100644
index 00000000..3872b915
Binary files /dev/null and b/src/public/images/1/0xd46ba6d942050d489dbd938a2c909a5d5039a161/logo.png differ
diff --git a/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52.png b/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52.png
deleted file mode 100644
index 79d1ea2f..00000000
Binary files a/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52.png and /dev/null differ
diff --git a/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/info.json b/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/logo.png b/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/logo.png
new file mode 100644
index 00000000..0d16e1ed
Binary files /dev/null and b/src/public/images/1/0xd533a949740bb3306d119cc777fa900ba034cd52/logo.png differ
diff --git a/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7.png b/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7.png
deleted file mode 100644
index 07875f52..00000000
Binary files a/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7.png and /dev/null differ
diff --git a/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/info.json b/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/logo.png b/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/logo.png
new file mode 100644
index 00000000..0b03c0a1
Binary files /dev/null and b/src/public/images/1/0xdac17f958d2ee523a2206206994597c13d831ec7/logo.png differ
diff --git a/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df.png b/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df.png
deleted file mode 100644
index 2916df7d..00000000
Binary files a/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df.png and /dev/null differ
diff --git a/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/info.json b/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/logo.png b/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/logo.png
new file mode 100644
index 00000000..c124cc20
Binary files /dev/null and b/src/public/images/1/0xdbdb4d16eda451d0503b854cf79d55697f90c8df/logo.png differ
diff --git a/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f.png b/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f.png
deleted file mode 100644
index 0a41f644..00000000
Binary files a/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f.png and /dev/null differ
diff --git a/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/info.json b/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/logo.png b/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/logo.png
new file mode 100644
index 00000000..fea279b1
Binary files /dev/null and b/src/public/images/1/0xde30da39c46104798bb5aa3fe8b9e0e1f348163f/logo.png differ
diff --git a/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71.png b/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71.png
deleted file mode 100644
index 4ab86468..00000000
Binary files a/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71.png and /dev/null differ
diff --git a/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/info.json b/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/logo.png b/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/logo.png
new file mode 100644
index 00000000..d31150e2
Binary files /dev/null and b/src/public/images/1/0xed40834a13129509a89be39a9be9c0e96a0ddd71/logo.png differ
diff --git a/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9.png b/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9.png
deleted file mode 100644
index ed7f4d82..00000000
Binary files a/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9.png and /dev/null differ
diff --git a/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/info.json b/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/logo.png b/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/logo.png
new file mode 100644
index 00000000..76285faf
Binary files /dev/null and b/src/public/images/1/0xf16e81dce15b08f326220742020379b855b87df9/logo.png differ
diff --git a/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e.png b/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e.png
deleted file mode 100644
index cf4f53d0..00000000
Binary files a/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e.png and /dev/null differ
diff --git a/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/info.json b/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/logo.png b/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/logo.png
new file mode 100644
index 00000000..0acb47f3
Binary files /dev/null and b/src/public/images/1/0xf938424f7210f31df2aee3011291b658f872e91e/logo.png differ
diff --git a/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/info.json b/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/info.json
new file mode 100644
index 00000000..9e9f082e
--- /dev/null
+++ b/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/info.json
@@ -0,0 +1,10 @@
+{
+ "removed": false,
+ "address": "0xfcf8eda095e37a41e002e266daad7efc1579bc0a",
+ "symbol": "FLEX",
+ "name": "Flex Coin",
+ "logoURI": "https://raw.githubusercontent.com/cowprotocol/token-lists/main/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/logo.png",
+ "reason": "A user request was submitted for this token.",
+ "decimals": 18,
+ "chainId": 1
+}
\ No newline at end of file
diff --git a/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/logo.png b/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/logo.png
new file mode 100644
index 00000000..479e9791
Binary files /dev/null and b/src/public/images/1/0xfcf8eda095e37a41e002e266daad7efc1579bc0a/logo.png differ
diff --git a/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c.png b/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c.png
deleted file mode 100644
index d8330038..00000000
Binary files a/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c.png and /dev/null differ
diff --git a/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/info.json b/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/logo.png b/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/logo.png
new file mode 100644
index 00000000..36ade849
Binary files /dev/null and b/src/public/images/100/0x177127622c4A00F3d409B75571e12cB3c8973d3c/logo.png differ
diff --git a/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E.png b/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E.png
deleted file mode 100644
index b6451433..00000000
Binary files a/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E.png and /dev/null differ
diff --git a/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/info.json b/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/info.json
new file mode 100644
index 00000000..9e26dfee
--- /dev/null
+++ b/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/info.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/logo.png b/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/logo.png
new file mode 100644
index 00000000..04b32964
Binary files /dev/null and b/src/public/images/100/0xcB444e90D8198415266c6a2724b7900fb12FC56E/logo.png differ
diff --git a/src/scripts/restructure_folders.py b/src/scripts/restructure_folders.py
new file mode 100755
index 00000000..707f366b
--- /dev/null
+++ b/src/scripts/restructure_folders.py
@@ -0,0 +1,36 @@
+#! /usr/bin/python3
+
+'''
+One off script for restructuring image folders
+
+To be run on src/public/images folder
+
+Old structure:
+/.png
+
+New structure:
+//logo.png
+//info.json
+
+info.json is created with an empty object inside
+'''
+
+import os
+
+def createDir(name):
+ print(f"Moving {name}")
+ os.makedirs(name, exist_ok=True)
+ os.rename(f"./{name}.png", f"./{name}/logo.png")
+ with open(f"./{name}/info.json", 'w') as f:
+ f.write('{}')
+
+def main():
+ for chain in [100, 1]:
+ for address in os.listdir(f"./{chain}"):
+ print(address, os.path.isfile(os.path.join(f"{chain}", address)))
+ if address.endswith('.png') and os.path.isfile(os.path.join(f"{chain}", address)):
+ print(chain, address)
+ createDir(os.path.join(f"{chain}", address.split('.')[0]))
+
+if __name__ == '__main__':
+ main()
\ No newline at end of file
diff --git a/src/scripts/workflow_helper.py b/src/scripts/workflow_helper.py
new file mode 100644
index 00000000..d493069e
--- /dev/null
+++ b/src/scripts/workflow_helper.py
@@ -0,0 +1,103 @@
+import sys
+import json
+import os
+
+
+LIST_PATH = os.environ["LIST_PATH"]
+
+
+def handle_add_update_token(data):
+ with open(LIST_PATH, "r+") as f:
+ token_list = json.load(f)
+
+ for token in token_list["tokens"]:
+ # update
+ if token["address"].lower() == data["address"].lower():
+ token["address"] = data["address"].lower()
+ token["symbol"] = data["symbol"]
+ token["name"] = data["name"]
+ token["logoURI"] = data["logoURI"]
+ token["decimals"] = int(data["decimals"])
+ token["chainId"] = int(data["chainId"])
+ break
+ else:
+ # add
+ token_list["tokens"].append(
+ {
+ "address": data["address"].lower(),
+ "symbol": data["symbol"],
+ "name": data["name"],
+ "decimals": int(data["decimals"]),
+ "chainId": int(data["chainId"]),
+ "logoURI": data["logoURI"],
+ }
+ )
+ f.seek(0)
+ f.truncate()
+ json.dump(token_list, f, indent=2)
+
+ handle_info_json(data)
+
+
+def handle_remove_token(data):
+ with open(LIST_PATH, "r+") as f:
+ token_list = json.load(f)
+
+ token_list["tokens"] = [
+ token
+ for token in token_list["tokens"]
+ if token["address"].lower() != data["address"].lower()
+ ]
+
+ f.seek(0)
+ f.truncate()
+ json.dump(token_list, f, indent=2)
+
+ handle_info_json(data, removed=True)
+
+
+def handle_info_json(data, removed=False):
+ file_path = f'src/public/images/{data["chainId"]}/{data["address"]}/info.json'
+
+ with open(file_path, "r+") as f:
+ try:
+ info = json.load(f)
+ except json.decoder.JSONDecodeError:
+ # File is empty
+ info = {}
+
+ info["removed"] = removed
+ info["address"] = data["address"].lower()
+ if data.get("symbol"): info["symbol"] = data["symbol"]
+ if data.get("name"): info["name"] = data["name"]
+ if data.get("logoURI"): info["logoURI"] = data["logoURI"]
+ if data.get("reason"): info["reason"] = data["reason"]
+ if data.get("decimals"): info["decimals"] = int(data["decimals"])
+ if data.get("chainId"): info["chainId"] = int(data["chainId"])
+
+ f.seek(0)
+ f.truncate()
+ json.dump(info, f, indent=2)
+
+
+def main():
+ option = sys.argv[1]
+ data_file = sys.argv[2]
+
+ with open(data_file) as f:
+ loaded_data = json.load(f)
+ print(loaded_data)
+
+ if option == "addToken":
+ handle_add_update_token(loaded_data)
+ elif option == "removeToken":
+ handle_remove_token(loaded_data)
+ elif option == "addImage":
+ handle_info_json(loaded_data)
+ else:
+ print("Wrong option")
+ exit
+
+
+if __name__ == "__main__":
+ main()